我的MDI程序运行一段时间后,提示错误,超过了 list bounds [7] 不知是怎么回事,请高人指点?(100分)

  • 主题发起人 主题发起人 小羽
  • 开始时间 开始时间

小羽

Unregistered / Unconfirmed
GUEST, unregistred user!
是不是我的ChildForm太多了,还是各Form之间互相uses导致的呢,万望大家不吝赐教。帮助提前者有分。
 
有一个专门用来计算用的线程,有一个Form上有定时器为这个线程定时提供数据,别的Form再引用这个线程,和这个有关吗?刚才我本来想给300分,不知怎么一下变成100分了,还能再加分吗?
 
肯定。
如果你这个线程中是用tlist或tthreadlist来记录的话。
 
没有啊,我用的线程很简单。
unit realcaculateThread;

interface

uses
Classes;

type
TrealcaculateThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;

implementation
uses realcaculate,fuzhi;

procedure TrealcaculateThread.Execute;

begin
realcaculateForm.Timer1.Enabled:=false;
//计算
realcaculateform.Timer1.Enabled:=true;
end;
end.
realcaculateForm :

rocedure TrealcaculateForm.Timer1Timer(Sender: TObject);
var
ii:integer;
mm:array[12..20] of real;
realthread :TrealcaculateThread;
begin
//赋值
////////
realthread:=TrealcaculateThread.Create(false);

///////////////
end;
end;




 
喂, 代吗不全啊。
realcaculateForm.Timer1.Enabled:=false;
//计算----->也许问题就在这里面啊
realcaculateform.Timer1.Enabled:=true;
 
如果问题在这里那么为什么会提示MDI错误呢?

//计算是三个实例的赋值,计算。

所用的数据是fuzhi提供的,同时realcaculateForm也用到了fuzhi.
 
三个实例的赋值???? 好危险啊。
fuzhi是什么东西呀?
同时realcaculateForm也用到了fuzhi???? 更危险了

信息不全, 无法告诉你错在哪
 
本来没用线程前一切正常,但是菜单反应太慢,后来我翻了一翻书,加上了线程 ,但是我对线程不是很了解,后来菜单速度快了,我又加了几个Form ,有的互相uses,现在运行一段时间就提示那个MDI的错误。
fuzhi是一个Form上面有一个定时器,定时让几个变量变化,realcaculateThread用这些数计算,在realcaculateForm中的定时器定时用这个线程,同时对结果进行处理。
 
根据你的描述,我只能告诉你程序出错的危险性极高。 但应该不是你遇到的那种错误, 而是access violation错误。
你的程序存在极高可能性的共享冲突错误(即主进程和你的线程或两个你的线程之间会同时对一个变量进行写操作)。
 
你说的有道理,我再试一试。这个MDI错误到底是怎么回事呢?
 
错误提示:Project MDIApp.exe raised exception class ElistError with message
'list index out of bounds(7)'. Process stopped . Use Step or Run to continue.
MDIApp.exe 是程序名,看来问题是出在线程了。
 
根据错误提示,应该是什么越界了。
 
我把线程去了,还是有这个错误,真是急死我了。
 
可能是什么数组或是列表越界了,单步调试一下
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
948
import
I
后退
顶部