本人用Delphi7开发一个程序,利用到ADOTable、TDataSource、TADOConnection、TADOQuery等数据库组件,以及一个串口控件Spcomm。串口空件接收到数据后,添加到数据库中。程序运行还算正常,但有时会随即提示错误:
       List index out of bounds(11)
   或:List index out of bounds(41)
   或:List index out of bounds(51)
   或:List index out of bounds(61)
   或:List index out of bounds(95)
点击“OK”后,程序又恢复正常,且数据库条目没有发生错误。所有的数组都不可能越界。请问这是什么问题?不胜感激

解决方案 »

  1.   

    看看哪个地方用了TList/TStringList等List控件,这个提示是索引越界
      

  2.   

    感谢postren(小虫),我没有用到过List类型控件。
      

  3.   

    不会是Spcomm的问题吧,用Try except 在接收数据以及保存数据库等容易发生异常的地方捕获一下看看具体是什么地方发生的异常
      

  4.   

    比如增加一个Memo来记录错误日志,Delphi中没有像C++中的__FILE__可以取得文件名,可以手工添加,以记录具体发生一场的位置与错误
      try  except
        on E: Exception do
        begin
          Memo1.Lines.Add(Format('%s[%d][%s]', [E.Message, 行号, '文件名']));
        end;
      end;
      

  5.   

    Spcomm我一直都在用它,从未发生过这样的问题。感谢postren(小虫) ,是不是必须结贴才能给分?
      

  6.   

    是不是中间执行过删除记录
    导致index有偏差
    我只是猜测阿