急:接收到的数据在DBChart中绘制曲线,偶尔会出现List index out of bounds或access violation的问题。 ( 积分: 1

  • 主题发起人 主题发起人 星魂1981
  • 开始时间 开始时间

星魂1981

Unregistered / Unconfirmed
GUEST, unregistred user!
急:接收到的数据在DBChart中绘制曲线,偶尔会出现List index out of bounds或access violation的问题。 ( 积分: 100 )<br />不知道是哪里的越界或非法访问,怎么排除或屏蔽这个异常啊?当出现List index out of bounds时,查看cpu是在TList.Get中的call TList.Error出错。
在DBChart中只是添加7个点是数据,即0,1,2,3,4,5,6,7点处添加,在窗体创建时已经添加了这7个点的数据,然后在需要添加曲线的地方代码如下:
if SeriesRevise1.Count=7 then
begin
SeriesRevise1.Clear;//先清除掉原来7个点的数据,再添加新的数据
SeriesRevise1.AddXY(0,0,'',clTeeColor);//
SeriesRevise1.AddXY(1,tmpY1,'',clTeeColor);//
SeriesRevise1.AddXY(2,tmpY2,'',clTeeColor);
SeriesRevise1.AddXY(3,tmpY3,'',clTeeColor);
SeriesRevise1.AddXY(4,tmpY4,'',clTeeColor);
SeriesRevise1.AddXY(5,tmpY5,'',clTeeColor);
SeriesRevise1.AddXY(6,0,'',clTeeColor);//
end;
其中 SeriesRevise1: TFastLineSeries;
tmpY1,tmpY2,tmpY3,tmpY4,tmpY5:double;
程序是接收到高速传输的数据并显示在DBChart中,偶尔会出现标题所述的现象,导致程序中止,急盼高手帮忙解决。关键是单步调试时始终都不会出错,不知道delphi中怎么跟踪,主要是接收大量数据会出错,数据量小点的时候感觉不会出错,我随机产生数据并按上面代码先清除7个点数据再添加7个点数据时也不出错,真是郁闷。谢谢了先!
 
http://www.51zhan.com 最好的网址站
http://www.51zhan.com 最好的网址站
http://www.51zhan.com 最好的网址站
 
http://www.51zhan.com 最好的网址站
http://www.51zhan.com 最好的网址站
http://www.51zhan.com 最好的网址站
 
类似的问题我也碰到过,用逐步调试是不行的,因为那样永远都没问题,若程序运行就会出问题。建议楼主,把接收到的数据显示在memo里,如果没问题的话,就可以判断问题是出在dbchart上了,而且可能性非常... 另外在数据传输时,再加个sleep试试。
 
这个问题经常碰到的
只能是逐段逐段的调试了
把你怀疑的代码拿掉再运行……
 
问题已经找到了,是我用了多线程,添加曲线是在自己建立的一个线程中实现的,我查了下,好像说是VCL不是线程安全的。具体的还要多查查资料才知道,谢谢各位了。
 
多人接受答案了。
 

Similar threads

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