设计一个动态数组时候通常要setlength(testarray,20),指定20为空间,但是我现在数组可能很大,而且是动态增加的,但我不知道具体数字是多少,不可能分配10000吧,这样肯定不对,请问该如何动态的分配

解决方案 »

  1.   

    需要多长就给它SetLength多长,例如
    procedure TForm1.Button1Click(Sender: TObject);
    var
      AAA: array of Byte;
    begin
      SetLength(AAA, 2);
      AAA[0] := 1;
      AAA[1] := 2;
      SetLength(AAA, 5);
      AAA[2] := 3;
      AAA[3] := 4;
      AAA[4] := 5;
      SetLength(AAA, 8);
      AAA[5] := 6;
      AAA[6] := 7;
      SetLength(AAA, 4);
      SetLength(AAA, 8);
    end;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      AAA: array of Byte;
    begin
      SetLength(AAA, 2);  //AAA = (0, 0)
      AAA[0] := 1;
      AAA[1] := 2;
      SetLength(AAA, 5);  //AAA = (1, 2, 0, 0, 0)
      AAA[2] := 3;
      AAA[3] := 4;
      AAA[4] := 5;
      SetLength(AAA, 8); //AAA = (1, 2, 3, 4, 5, 0, 0, 0)
      AAA[5] := 6;
      AAA[6] := 7;
      SetLength(AAA, 4); //AAA = (1, 2, 3, 4)
      SetLength(AAA, 8); //AAA = (1, 2, 3, 4, 0, 0, 0, 0)
    end;