数组可变大小的问题:
假设要处理的point(x,y)有5个,
设置固定大小数组
thepoint :array[0..4] of tpoint;
然后赋值,得到数组每个元素的值,然后进行相关运算
没有问题,可以得到正确的结果
但如果将数组定义为可变大小:
thepoint :array of tpoint;
setlength(thepoint,5);
再对数组元素赋值,进行相关运算,问题来了,
经过多次调试,发现问题极有可能出在可变数组的定义上,但不知如何解决

解决方案 »

  1.   

    可以得到结果,但是错误的,delphi没有报错
      

  2.   

    我按下面用,一点问题也没有啊!
    procedure TForm1.Button1Click(Sender: TObject);
    var
      tp :array of TPoint;
    begin
      SetLength(tp,5);
      tp[0].X := 0;
      tp[0].Y := 0;
      tp[1].X := 100;
      tp[1].Y := 100;
      tp[2].X := 100;
      tp[2].Y := 200;
      tp[3].X := 200;
      tp[3].Y := 300;
      tp[4].X := 600;
      tp[4].Y := 600;  self.Canvas.TextOut(tp[3].X, tp[2].Y, 'season');
    end;
      

  3.   

    感谢大家的帮助,我将问题说的更详细一点:
    在固定大小数组里面给point赋值是这样做的:
      thepoint[0]:=point(181,147);
      thepoint[1]:=point(182,178);
      thepoint[2]:=point(238,173);
      thepoint[3]:=point(241,144);
      thepoint[4]:=point(221,100);
    而在可变大小里面给point赋值是这样做的:
    j :=0;
    for i :=0 to m do //m 已经算出来,等于4
    begin
     thepoint[i] :=point(a[j],a[j+1]);//其中a为整型数组
     j :=j+1;
    end;
    赋值后得到的thepoint[i]数组元素的值和上面一样
    但后续的处理结果不相同
      

  4.   

    PntArr:array of TPoint;
    begin
      SetLength(PntArr,1);//现在可以放一个TPoint;
    //.................
      SetLength(PntArr,inc(High(PntArr))//现在可以多放一个元素了。
    for i:=Low(PntArr)to High(PntArr) do //安全访问,不担心会越界
      begin
        PntArr[i]:=Point();//////
      end;
    end;