我用下面的函数进行显示曲线时,有时回出现下面的错误提示。多次检查不知是什么原因。
我的函数为:
procedure TfrmMain.ShowOneCav(cds:Tclientdataset);
var yValue:real;
xValue:string;
begin
    series1.Clear ;
    chart2.Legend.Color:=RGB($D4,$D0,$C8);
    series1.LinePen.Width :=2;
    series1.Title :=CdsTemp.Fields[0].AsString ;
    cds.First ;
    while not cds.Eof do
      begin
        yValue:= cds.fieldbyName('amount').AsFloat ;
        xValue:=cds.fieldbyName('bmonth').AsString ;
        series1.AddY(yValue,xValue,clyellow);
      //series1.AddXY(cds.FieldValues['bmonth'],cds.fieldbyName('amount').AsFloat) ;
       cds.Next ;
      end;
end;
错误信息为:
Project ProWXTrendAnalys.exe raised exception class EAccessViolation with 
message 'Access violation at address 004C0D2F in module 'ProWXTrendAnalys.exe'. 
Write of address 00DC4000'. Process stopped. Use Step or Run to continue.

解决方案 »

  1.   

    这应该是TChart和TDBChart的一个Bug,只要是一条水平(竖直没有测试)或N条相同的水平直线,在竖直坐标大于1818以上都会有这个异常出现,这是我测试的结果解决的办法:
      1.让你的曲线(一条或多条)数据不出现水平数据曲线
      2.若要出现水平直线,则最大数据不能超过1818
      3.添加一条多余的Series,把其曲线的颜色设置为背景色,使其隐藏,并使其数据出现斜线即可推荐使用方法3