本人使用Delphi不久,老板又崔东西,没时间深究,特向大家请教。
问题是这样的: 我使用的是TChat和TLineSeries画曲线,
数据是这样的:
X          Y
0          5000
4.28       5000
8.56       5000
12.83      5000
17.11      5000
21.39      5000
25.67      5000
29.94      5000
34.22      5000
38.50      5000
42.78      5000
47.05      5000
51.33      5000
55.61      5000
59.89      5000
64.17      5000
68.44      5000
72.72      5000
77.00      5000
81.28      5000
85.55      5000
89.83      5000
94.11      5000
用TChat画图时出现错误:
--------------------------------------------------
Project XX.exe raised exception class EAccessViolation with message
 'Invalid pointer operation'. process stopped.use step or Run to continue.
--------------------------------------------------
奇怪的是,用其他数据时,画图正常。请问这是怎么回事,怎么解决?

解决方案 »

  1.   

    不好意思,TChat应该为TChart,写得太急了
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: integer;
      Y: real;
      Xs: array[0..22] of real;
      Ys: array[0..22] of real;
    begin
    Y:=strtoFloat(Edit1.Text);
    Xs[0]:=0    ;
    Xs[1]:=4.28 ; 
    Xs[2]:=8.56 ; 
    Xs[3]:=12.83;
    Xs[4]:=17.11;
    Xs[5]:=21.39;
    Xs[6]:=25.67;
    Xs[7]:=29.94;
    Xs[8]:=34.22;
    Xs[9]:=38.50;
    Xs[10]:=42.78; 
    Xs[11]:=47.05; 
    Xs[12]:=51.33; 
    Xs[13]:=55.61; 
    Xs[14]:=59.89; 
    Xs[15]:=64.17; 
    Xs[16]:=68.44; 
    Xs[17]:=72.72; 
    Xs[18]:=77.00; 
    Xs[19]:=81.28; 
    Xs[20]:=85.55; 
    Xs[21]:=89.83; 
    Xs[22]:=94.11; 
      Series1.Clear;
      for i:=0 to 22 do
      begin
        Series1.AddXY( xs[i], Y, '', clTeeColor );
      end;
    end;
    以上是我得一个测试代码,可以在Eidt中输入Y坐标得值,当取到4600多得时候。程序就出错了。如果是超出取值范围,可以把Y坐标数组中得一个值改为比5000大,比如:5001,程序又能正常工作。为什么Y不变得时候出错。y有变化得时候没问题了呢,真郁闷!
      

  3.   

    Series1.AddXY( xs[i], Y, '', clRed );
      

  4.   

    改为Series1.AddXY( xs[i], Y, '', clRed );问题依旧,应该不会是线条颜色得问题吧。