我想根据我输入的值来定义二维数组的长和宽,请问如何实现??一位数组我是这样实现的length:=StrToInt(edit1.text);
setlength(a,length);这样就定义了一个长为length的数组。请问二维如何实现??
谢谢,小妹感激不尽!!!

解决方案 »

  1.   

    To declare multidimensional dynamic arrays, use iterated array of ... constructions. For example,type TMessageGrid = array of array of string;
    var Msgs: TMessageGrid;declares a two-dimensional array of strings. To instantiate this array, call SetLength with two integer arguments. For example, if I and J are integer-valued variables,SetLength(Msgs,I,J);allocates an I-by-J array, and Msgs[0,0] denotes an element of that array.You can create multidimensional dynamic arrays that are not rectangular. The first step is to call SetLength, passing it parameters for the first n dimensions of the array. For example,var Ints: array of array of Integer;
    SetLength(Ints,10);allocates ten rows for Ints but no columns. Later, you can allocate the columns one at a time (giving them different lengths); for exampleSetLength(Ints[2], 5);makes the third column of Ints five integers long. At this point (even if the other columns haven't been allocated) you can assign values to the third column--for example, Ints[2,4] := 6.The following example uses dynamic arrays (and the IntToStr function declared in the SysUtils unit) to create a triangular matrix of strings.var
      A : array of array of string;
      I, J : Integer;
    begin
      SetLength(A, 10);
      for I := Low(A) to High(A) do
      begin
        SetLength(A[I], I);
        for J := Low(A[I]) to High(A[I]) do
          A[I,J] := IntToStr(I) + ',' + IntToStr(J) + ' ';
      end;
    end;