eg: 
type
  tff=record
    dd:integer;
    dda:string;
  end;
  ff=^tff;
proceudre ddddddd;
var
  rr:ff;
begin
  new(rr);
  rr^.dd:=100;
  rr^.dda:='a12345';
end;如果rr的长度要求是100→有100个ff
要怎么作啊?

解决方案 »

  1.   

    proceudre ddddddd;
    var
      rr:array[0..99] of ff;
      i:integer 
    begin
      for i:=0 to 99 do
    begin
        new(rr[i]);
      rr[i]^.dd:=100;
      rr[i]^.dda:='a12345';
    end;
    end;
    记得最后循环释放
      

  2.   

    报歉,我已经知道了(蒙出来的)!
      new(rr);
      getmem(rr,2*sizeof(ff));
      rr^.dd:=100;
      rr^.dda:='a12345';
      inc(rr);
      rr^.dd:=200;
      rr^.dda:='111119';
      
    像这样就可以了!
      

  3.   

    const n= 100;
    procedure test;
    var
      arrff: array[1..n] of ff;
      i: integer;
    begin
      for i:= 1 to n do
      begin
        new(arrff[i]);
        arrff^.dd:= 100;
        arrff^.dda:= 'string';
        dispose(arrff[i]);
      end;
    end;
      

  4.   

    for i:= 1 to n do
      begin
        new(arrff[i]);
        arrff^.dd:= 100;
        arrff^.dda:= 'string';
      end;
    用完后再释放
      

  5.   

    为什么不直接用aaa; array of Tff;???难道用指针就好么?
      

  6.   

    可以定义个结构的动态数组哦! 比较简单,能适应不同的大小.而且可以不用指针的。
    var Data : array of Tff;
        i : integer;  
    begin
      Setlength(Data,100)
      for i := low(Data) to High(Data) do
      begin
          Data[i].dd := i;
          Data[i].dda := inttostr(i);  
      end;end
    释放的时候 Data := nil 就行了! 
    完全不用指针的! 呵呵! 好用的!
      

  7.   

    procedure TForm1.Button1Click(Sender: TObject);
    const
      FFCOUNT=100;type
      tff=record
        dd:integer;
        dda:string;
      end;
      ff=^tff;var
      rr:array of ff;
      i: Integer;
    begin
      SetLength(rr, FFCOUNT);
      for i:=Low(rr) to High(rr) do
      begin
        rr[i]:=AllocMem( SizeOf(tff) );
        rr[i]^.dd:=100;
        rr[i]^.dda:='a12345';
      end;
      for i:=Low(rr) to High(rr) do
        FreeMem(rr[i]);
      ShowMessage('finish...');
    end;我的代码经过调试 绝对可行 完全实现了你的要求 
      

  8.   

    const
      COUNT: integer;
    var
      Arrff: array of ff;
      i: integer;
    begin
      SetLength(Arrff, COUNT);
      for i := Low(Arrff) to High(Arrff) do begin
        New(Arrff[i]);
        arrff^.dd:= 100;
        arrff^.dda:= 'string';
        Dispose(Arrff[i]);
      end;
    end;