[問題] substring的問題

看板C_Sharp (C#)作者 (不准離開我)時間13年前 (2012/08/12 00:54), 編輯推噓0(0014)
留言14則, 4人參與, 最新討論串1/1
有爬了板上問有關substring的文, 程式可以跑, 但到最後一筆資料跑完就會出現, "startIndex 不可以大於字串的長度。" 的問題, 程式碼前有"●"的是會出錯的地方, (很笨不會用顏色QQ ) 資料庫取出來的資料是自己用手打的日期(資料型態:char(10)), 資料只有三筆, 都確定startIndex沒超過字串長度(例:2012/08/11), 程式碼: day1 = Convert.ToInt16(dateTimePicker6.Value.ToString("dd")) - Convert.ToInt16(dateTimePicker5.Value.ToString("dd")); label17.Text = Convert.ToString(day1 + 1); for (m = 0; m < dataGridView5.RowCount; m++) { x = Convert.ToString(dataGridView5.Rows[m].Cells[4].Value); ● x1 = Convert.ToInt16(x.Substring(8, 2)); y = Convert.ToString(dataGridView5.Rows[m + 1].Cells[3].Value); ● y1 = Convert.ToInt16(y.Substring(8, 2)); day2 = y1 – x1 - 1; } ---- 懇請各位高手幫忙解惑QQ ---- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.105.229.50 ※ 編輯: ccccccc540 來自: 112.105.229.50 (08/12 00:55)

08/12 01:02, , 1F
你y的index用m+1在最後一筆不會out of range?
08/12 01:02, 1F
啊!我這段程式碼外面有一層 if (m != dataGridView5.RowCount) ※ 編輯: ccccccc540 來自: 112.105.229.50 (08/12 01:09)

08/12 02:32, , 2F
三筆資料都可以跑完? 為什麼跑完沒有跳出迴圈?
08/12 02:32, 2F

08/12 02:34, , 3F
你確定你x的資料格式都是月份和日期都是兩位數的嗎?
08/12 02:34, 3F

08/12 02:38, , 4F
if (m != dataGridView5.RowCount) 你的m本來就不會等於
08/12 02:38, 4F

08/12 02:39, , 5F
RowCount吧,這行根本多餘的。
08/12 02:39, 5F
我確定我三筆資料都有跑完, 因為我還用messagebox確認三筆都有跑出來。 關於 if (m != dataGridView5.RowCount) 這一行, 我沒打這行的時候會跑空白的messagebox, 打了就沒這個問題, 不知道是不是那行IF的作用。 然後我也確認我日期都有兩碼, 謝謝回復:)

08/12 10:24, , 6F
在你的點那裡設中斷點吧~停在那裡看X或Y的長度,我認為有
08/12 10:24, 6F

08/12 10:25, , 7F
問題
08/12 10:25, 7F

08/12 21:25, , 8F
同意樓上 中斷點+逐步執行+監看式 基本上可以解決
08/12 21:25, 8F

08/12 21:25, , 9F
90%以上的問題
08/12 21:25, 9F

08/12 22:20, , 10F
程式就是這樣,有時你認為不可能錯而不去看的地方,最有問題
08/12 22:20, 10F
樓上兩為大大說得我會試試, 謝謝回復:) ※ 編輯: ccccccc540 來自: 114.26.78.12 (08/13 03:15)

08/13 10:31, , 11F
資料跑完了為什麼沒跳出迴圈? 你不覺得奇怪嗎
08/13 10:31, 11F

08/13 10:37, , 12F
1. 你的for loop 條件下錯。 2. 其實有3筆資料+一筆空白列
08/13 10:37, 12F

08/13 10:37, , 13F
3. 你在程式裡面又改了m的值
08/13 10:37, 13F

08/13 10:40, , 14F
跑出空白的messagebox代表他根本跑了第4次阿
08/13 10:40, 14F
文章代碼(AID): #1G9ev632 (C_Sharp)
文章代碼(AID): #1G9ev632 (C_Sharp)