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;
|