procedure TForm1.Button1Click(Sender: TObject);
var
 ans:array of pdouble;
 i,num:integer;
begin
  num:=10;
  setlength(ans,num);
 for i:=0 to 10 go
  ans[i]^:=i;
end;
程序运行时到ans[i]^:=i;这一步就会出错,求各位给解决一下.

解决方案 »

  1.   

    pdouble还需要分配内存,释放的时候也需要。
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject); 
    var 
    ans:array of pdouble; 
    i,num:integer; 
    begin 
      num:=10; 
      setlength(ans,num); 
      if i := 0 to num - 1 do begin
        new(ans[i]);
      end;  for i:=0 to 10 go 
        ans[i]^:=i;   for i := 0 to num - 1 do begin
        Dispose(ans[i]);
      end;
      SetLength(Ans,0);
      Ans := Nil;
    end; 
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
    ans:array of pdouble;
    i,num:integer;
    begin
      num:=10;
      setlength(ans,num);
    for i:=0 to 10 go //1,动态数组循环越界;2,错误关键词,不知道你怎么编译通过的。
      ans[i]^:=i; //3,没有为指针数组内的元素分配空间
    end;