Delphiの動的配列について紹介します。
Delphiでは実行時に配列の長さを動的に変えられる「動的配列」が使えます。
var節にて、下記の記述で定義します。
動的配列の配列長を設定する場合はSetLengthを用います。
動的配列の要素を取得する場合、要素に代入をする場合は添え字でアクセスできます。
動的配列の長さはLength関数で取得できます。
動的配列を明示的に開放する場合はFinalizeメソッドを用います。
下記の記述により、Char型の動的配列dataを定義したことになります。
data: array of char;
下記の記述により、動的配列dataの配列長を10に設定します。
SetLength(data, 10);
配列へのアクセスは通常の配列と同様に下記の記述となります。
data[0]:='a';
下記の記述によりと動的配列dataの配列長が求められます。
Length(data)
下記の記述で動的配列を解放できます。
Finalize(data):
procedure TForm1.Button4Click(Sender: TObject);
var
data:array of integer;
i:integer;
begin
SetLength(data,5);
data[0]:=12;
data[1]:=4;
data[2]:=6;
data[3]:=22;
data[4]:=1;
for i:=0 to Length(data)-1 do begin
Memo1.Lines.Add(IntToStr(data[i]));
end;
//Finalize(data);//明示的に開放する場合
end;
多次元の動的配列の場合は下記の記述となります。
下記の記述により、2次元のInteger型の動的配列を定義できます。
data:array of array of integer;
procedure TForm1.Button5Click(Sender: TObject);
var
data:array of array of integer;
i,j:integer;
begin
SetLength(data,2);
for i:=0 to Length(data)-1 do begin
SetLength(data[i],3);
end;
data[0][0]:=4;
data[0][1]:=6;
data[0][2]:=8;
data[1][0]:=1;
data[1][1]:=3;
data[1][2]:=5;
for i:=0 to Length(data)-1 do begin
for j:=0 to Length(data[i])-1 do begin
Memo1.Text:=Memo1.Text+IntToStr(data[i][j])+Chr($09);
end;
Memo1.Text:=Memo1.Text+Chr($0D)+Chr($0A);
end;
end;