看板 C_Sharp 關於我們 聯絡資訊
有爬了板上問有關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)
ssccg:你y的index用m+1在最後一筆不會out of range? 08/12 01:02
啊!我這段程式碼外面有一層 if (m != dataGridView5.RowCount) ※ 編輯: ccccccc540 來自: 112.105.229.50 (08/12 01:09)
ken1325:三筆資料都可以跑完? 為什麼跑完沒有跳出迴圈? 08/12 02:32
ken1325:你確定你x的資料格式都是月份和日期都是兩位數的嗎? 08/12 02:34
ken1325:if (m != dataGridView5.RowCount) 你的m本來就不會等於 08/12 02:38
ken1325:RowCount吧,這行根本多餘的。 08/12 02:39
我確定我三筆資料都有跑完, 因為我還用messagebox確認三筆都有跑出來。 關於 if (m != dataGridView5.RowCount) 這一行, 我沒打這行的時候會跑空白的messagebox, 打了就沒這個問題, 不知道是不是那行IF的作用。 然後我也確認我日期都有兩碼, 謝謝回復:)
Abbee:在你的點那裡設中斷點吧~停在那裡看X或Y的長度,我認為有 08/12 10:24
Abbee:問題 08/12 10:25
XFantasyX:同意樓上 中斷點+逐步執行+監看式 基本上可以解決 08/12 21:25
XFantasyX:90%以上的問題 08/12 21:25
Abbee:程式就是這樣,有時你認為不可能錯而不去看的地方,最有問題 08/12 22:20
樓上兩為大大說得我會試試, 謝謝回復:) ※ 編輯: ccccccc540 來自: 114.26.78.12 (08/13 03:15)
ken1325:資料跑完了為什麼沒跳出迴圈? 你不覺得奇怪嗎 08/13 10:31
ken1325:1. 你的for loop 條件下錯。 2. 其實有3筆資料+一筆空白列 08/13 10:37
ken1325:3. 你在程式裡面又改了m的值 08/13 10:37
ken1325:跑出空白的messagebox代表他根本跑了第4次阿 08/13 10:40