帮助看一下错误信息:raise exception class EstringListError with message 'list index out of

  • 主题发起人 主题发起人 gzz678
  • 开始时间 开始时间
G

gzz678

Unregistered / Unconfirmed
GUEST, unregistred user!
帮助看一下错误信息:raise exception class EstringListError with message 'list index out of bounds(4)',出错的代码如下:(100分)<br /> strSql:='select * from Client where (clientType=:pam0)';
dmSca.qryTemp.Close;
dmSca.qryTemp.SQL.Clear;
dmSca.qryTemp.SQL.Add(strSql) ;
dmSca.qryTemp.Params[0].AsString:=strCurr;
dmSca.qryTemp.Prepare;
dmSca.qryTemp.Open;
if dmSca.qryTemp.RecordCount>0 then
begin
dmSca.qryTemp.First;
while not dmSca.qryTemp.Eof do
begin
ListItem := ListView.Items.Add;
ListItem.Caption:=dmSca.qryTemp['name'];
ListItem.SubItems.Add(dmSca.qryTemp['sex']);
ListItem.SubItems.Add(dmSca.qryTemp['danwei']);
if dmSca.qryTemp['moveTel']<>null then
ListItem.SubItems.Add(dmSca.qryTemp['moveTel'])
else ListItem.SubItems.Add('无');
if dmSca.qryTemp['workTel']<>null then
ListItem.SubItems.Add(dmSca.qryTemp['workTel'])
else ListItem.SubItems.Add('无');
ListItem.SubItems.Add(dmSca.qryTemp['jiLuDate']);
ListItem.SubItems.Add(dmSca.qryTemp['ModDate']);
ListItem.SubItems.Add(dmSca.qryTemp['csheng']);
ListItem.SubItems.Add(dmSca.qryTemp['ccity']);
ListItem.SubItems.Add(dmSca.qryTemp['banshichu']);
ListItem.SubItems.Add(dmSca.qryTemp['clientType']);
ListItem.SubItems.Add(dmSca.qryTemp['secondType']);
ListItem.SubItems.Add(dmSca.qryTemp['guishu']);
ListItem.ImageIndex:=1;
dmSca.qryTemp.Next;
end;
end;
很怪的是这段代码有时出错,有时又不出错,经过设置段点,发现经过一次循环后在ListItem.Caption:=dmSca.qryTemp['name'];出错,
请问是什么原因,如何 解决?谢谢!
 
明显是listitem越界,你断点调试几次,肯定能找出原因,这样的问题一般都是你程序有问题
今天过节,大家都忙着灌水了:)
 
是listitem 地址越界了
我以前也曾遇到过这个信息
我后来查到是因为我的代码的条件不对形成死循环
建义你还是跟踪一下代码
 
strSql:='select * from Client where (clientType=:pam0)';
dmSca.qryTemp.Close;
dmSca.qryTemp.SQL.Clear;
dmSca.qryTemp.SQL.Add(strSql) ;
dmSca.qryTemp.Params[0].AsString:=strCurr;
dmSca.qryTemp.Prepare;
dmSca.qryTemp.Open;
//不要这个判断,没有任何必要if dmSca.qryTemp.RecordCount>0 then
// begin
// dmSca.qryTemp.First;
ListView.Items.clear;//无论如何要开始清空吧
while not dmSca.qryTemp.Eof do
begin
ListItem := ListView.Items.Add;
ListItem.Caption:=dmSca.qryTemp['name'];
ListItem.SubItems.Add(dmSca.qryTemp['sex']);
ListItem.SubItems.Add(dmSca.qryTemp['danwei']);
if dmSca.qryTemp['moveTel']<>null then
ListItem.SubItems.Add(dmSca.qryTemp['moveTel'])
else ListItem.SubItems.Add('无');
if dmSca.qryTemp['workTel']<>null then
ListItem.SubItems.Add(dmSca.qryTemp['workTel'])
else ListItem.SubItems.Add('无');
ListItem.SubItems.Add(dmSca.qryTemp['jiLuDate']);
ListItem.SubItems.Add(dmSca.qryTemp['ModDate']);
ListItem.SubItems.Add(dmSca.qryTemp['csheng']);
ListItem.SubItems.Add(dmSca.qryTemp['ccity']);
ListItem.SubItems.Add(dmSca.qryTemp['banshichu']);
ListItem.SubItems.Add(dmSca.qryTemp['clientType']);
ListItem.SubItems.Add(dmSca.qryTemp['secondType']);
ListItem.SubItems.Add(dmSca.qryTemp['guishu']);
ListItem.ImageIndex:=1;
dmSca.qryTemp.Next;
end;
// end;

 
to gzz678:
我看不出你的程序有什么错,你用的是Delphi5吗?用了ADOExpress吗?
那么应该安装ADO补丁2,这个补丁修改了MDAC v2.6 "Either EOF or BOF
is true." error with ADOExpress 的Bug,下面是Borland的官方下载地址,
http://www.borland.com/devsupport/delphi/mdac26.html
 
没有答案的回答
 
后退
顶部