起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 398|回复: 9

【结贴】在窗体释放的时候,报List Index out of bound(0),请帮忙分析原因?

[复制链接]
发表于 2010-9-8 12:31:50 | 显示全部楼层 |阅读模式
procedure TFORM_SCRBB.Button1Click(Sender: TObject);
var
  lSczbylb:TWIN_SCZBCSYLB;
begin
  try
    lSczbylb:=TWIN_SCZBCSYLB.Create(Context);
    if lSczbylb.ShowModal= Controls.mrOk then
    begin
      (InfoBroker.Info as TINFO_SCRBB).setItemsSCRB;
    end;
  finally
lSczbylb.Free;
  end;
end;
回复

使用道具 举报

发表于 2010-9-8 12:45:43 | 显示全部楼层
只看着几行代码能看出什么来呀?根据报错的提示应该是你在界面上用到list/TStringList或者其他相关控件,由于超过索引范围而引发的错误!在关闭的时候跟踪一下代码就知道了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-9-8 13:05:36 | 显示全部楼层

[请求]

我在界面上面没有用到list或者TStringList或者其他相关控件。
setItemsSCRB里面部分相关代码:
     lQuery.First ;
      while not lQuery.Eof do
      begin
         if lQuery.FieldByName('FCDBM').AsString='MDDC.XNFX1.N' then
           begin
             DataSetSCRBB.FieldByName('GSZL').AsFloat:=lQuery.FieldByName('fbrsj').AsFloat/100 ;
           end ;
       lQuery.Next ;
      end ;
   DataSetSCRBB.Post ;
   finally
     lQuery.Free ;
     DataSetSCRBB.EnableControls ;
   end ;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-9-8 13:12:53 | 显示全部楼层

[请求]

代码调试:走到lSczbylb.Free的时候,就报这个错误。
回复 支持 反对

使用道具 举报

发表于 2010-9-8 14:15:43 | 显示全部楼层
lSczbylb这是个什么?一个控件还是窗体?这个释放的时候下标越界了。查看它或者相关的代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-9-8 15:25:58 | 显示全部楼层
Sczbylb是个窗体
回复 支持 反对

使用道具 举报

发表于 2010-9-8 16:12:32 | 显示全部楼层
那就是这个窗体上有对象创建了但是没有释放
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-9-8 16:31:08 | 显示全部楼层
lSczbylb.Free;  就是释放了。关键是,这个报错并不是每次都报。有时候运行就没有问题,有时候就会报这个错误。
回复 支持 反对

使用道具 举报

发表于 2010-9-8 16:54:37 | 显示全部楼层
这样的错误,一般是对象释放出问题了,楼主,可以通过屏蔽代码然后一点一点开发看看。
主要是自己创建的对象和释放的时机
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-9-9 19:26:34 | 显示全部楼层
问题已解决。结贴了,谢谢大家。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-6 20:39 , Processed in 0.037525 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表