動的配列の宣言と利用 - 動的配列の基本 - Delphi

Delphiの動的配列について紹介します。

概要

Delphiでは実行時に配列の長さを動的に変えられる「動的配列」が使えます。

書式

動的配列の定義

var節にて、下記の記述で定義します。
(動的配列変数名):array of (型名);

配列長の設定

動的配列の配列長を設定する場合はSetLengthを用います。
SetLength((動的配列変数名),(長さ));

動的配列長の要素の取得、代入

動的配列の要素を取得する場合、要素に代入をする場合は添え字でアクセスできます。
(動的配列変数名)[(添え字のインデックス)]

動的配列長の取得

動的配列の長さはLength関数で取得できます。
Length((動的配列変数名));

動的配列の開放

動的配列を明示的に開放する場合はFinalizeメソッドを用います。
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
iPentec all rights reserverd.