Delphiの動的配列について紹介します。
概要
Delphiでは実行時に配列の長さを動的に変えられる「動的配列」が使えます。
書式
動的配列の定義
var節にて、下記の記述で定義します。
配列長の設定
動的配列の配列長を設定する場合はSetLengthを用います。
SetLength((動的配列変数名),(長さ));
動的配列長の要素の取得、代入
動的配列の要素を取得する場合、要素に代入をする場合は添え字でアクセスできます。
動的配列長の取得
動的配列の長さはLength関数で取得できます。
動的配列の開放
動的配列を明示的に開放する場合はFinalizeメソッドを用います。
記述例
下記の記述により、Char型の動的配列dataを定義したことになります。
data: array of char;
下記の記述により、動的配列dataの配列長を10に設定します。
SetLength(data, 10);
配列へのアクセスは通常の配列と同様に下記の記述となります。
data[0]:='a';
下記の記述によりと動的配列dataの配列長が求められます。
Length(data)
下記の記述で動的配列を解放できます。
Finalize(data):
コード例1
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;
多次元動的配列
多次元の動的配列の場合は下記の記述となります。
(動的配列変数名):array of array of (型名);
記述例
下記の記述により、2次元のInteger型の動的配列を定義できます。
data:array of array of integer;
コード例2
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;
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2018-08-20
作成日: 2010-12-31