作者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