Swanman's Horizon

性欲をもてあましつつなんらかの話をするよ。

多次元配列の初期化。

Delphiの多次元動的配列は動的配列の動的配列という実装なので、メモリ上の配置は必ずしも連続しておらず(静的な場合は連続している)、Length(Hoge[0])の要素は10コだけど、Length(Hoge[1])の要素は2コ、というようにそれぞれ別の長さを設定してやることができる。
でもどの次元でも同じ長さを指定してやりたい場合ってのも多くて、

var Hoge: array of Byte;
...
SetLength(Hoge, 10);
for i := Low(Hoge) to High(Hoge) do
begin
  SetLength(Hoge[i], 5);
end;

というようにループで回して初期化してる例もよく見る。
でも実はSetLengthには多次元配列を一発で初期化する機能が実はあって、

SetLength(Hoge, 10, 5);

こう書くだけでarray[0..9] of array[0..4] of Byteな長さを持った配列になる。