Redim 動的配列

Redimは配列の要素数を動的に変更します。Delphiでは Delphi 4 から導入された動的配列を使用します。これは配列の宣言時に要素数を記述せず、SetLength手続き を使って配列の要素数を定義します。
多次元にする場合は array of を次元の数だけ記述します。

■ 動的配列を使用する例
  //-------------------------------------------
  //  動的配列サンプル1
  //-------------------------------------------
  //  今月の日数分配列を用意し、日付を代入します。
  //  ただそれだけ。
  //-------------------------------------------
  procedure TForm1.Button1Click(Sender: TObject);
  var
    aryDay    : array of  TDateTime;
    datNow    : TDateTime;
    YY,MM,DD  : word;
    intLast   : integer;
    ix        : integer;
  begin
    //今月の末日を求める
    datNow    :=    Now;
    DecodeDate(Now, YY, MM, DD);
    datNow    :=    EncodeDate(YY, MM, 1);
    datNow    :=    IncMonth(datNow, 1) - 1;
    DecodeDate(datNow, YY, MM, DD);
    intLast   :=    DD;

    //末日の分だけ配列をつくる
    //※SetLengthでは配列の数を指定する!
    SetLength(aryDay, intLast);

    //日付を代入
    for   ix      :=  0   to    High(aryDay) do  begin   
      aryDay[ix]  :=  EncodeDate(YY, MM, ix + 1);
      Memo1.Lines.Add(DateToStr(aryDay[ix]));
    end;
  end;

■ 二次元の動的配列を使用する例
  //-------------------------------------------
  //  動的配列サンプル2
  //-------------------------------------------
  procedure TForm1.Button2Click(Sender: TObject);
  var
    aryData : array of  array of  integer;
    X,Y     : integer;
    ix,iy   : integer;
  begin
    X   :=  StrToIntDef(Edit1.Text, 0);
    Y   :=  StrToIntDef(Edit2.Text, 0);
     
    SetLength(aryData, X);
    
    for   ix    :=    0   to    High(aryData) do  begin
      SetLength(aryData[ix],Y);
      for iy    :=    0   to    High(aryData[ix]) do  begin  
        aryData[ix][iy]   :=    (ix * 100) + (iy);
        Memo1.Lines.Add(IntToStr(aryData[ix][iy]));
      end;
    end;
  end;