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