List index out of bounds(-1) 的可能原因.(50分)

  • 主题发起人 主题发起人 racoon
  • 开始时间 开始时间
R

racoon

Unregistered / Unconfirmed
GUEST, unregistred user!
最近编写了一个控件,在应用时采用动态生成控件的的方式。
在开始运行的时候没有问题,但后几次运行时则出现
list index out of bounds(-1)的警告,并且程序不能再运行,
且要关掉Delphi 才行。而开始生成的EXE文件能顺利运行,没任何
故障。
请问众位大虾,能指点一二么?
 
please paste your source
 
贴出代码吧!
我估计可能是动态删除控件时索引搞乱了.
 
我也是这样认为。
 
多数如此。
 
动态生成控件时一般无法用name来控制控件的动作,所以必须用components的方
式来查找,但如果运用不当,很容易出现问题。如你在with XXX do ...结构中用了
components,则有可能这个components只是在XXX包容器内查找,与你原先的
compontntcount不能匹配,必然出现上述错误。还有动态删除控件时也容易出现这错
误。
 
经常性的一种错误是这样的:
for i:=0 to list.count-1 do
list.delete(i);

可以用
while list.count<>0 do
list.delete(0);
代替
 
; 我也见过同样的现象,如果出现了超出了整个form上的控件数时,
会出现这样的警告,并delphi无法运行.具体原因我也想知道.
 
; 我很想将源程序贴出来,可是源文件有些大。如果哪个
大虾本着祝人为快乐之本的原则来拉小弟一把的话,我给你
email过去。是ZIP文件很小,只有5K.

请发email给我
racoon.wang@263.net
 
多人接受答案了。
 
后退
顶部