D2010 を使用して、次のようなことをしたいと思います。
procedure SizeArray(var aArr: array of integer; aSize: integer);
begin
SetLength(aArr,aSize);
end;
しかし、これはコンパイルに失敗します。私の「aArr」パラメーターは動的配列ではないため、オープン配列パラメーターです。また、 SetLength を呼び出すことはできません。パラメータを強制的に動的配列にする唯一の方法は、次のように型名を付けることです。
type
TIntArray = array of integer;
procedure SizeArray(var aArr: TIntArray; aSize: integer);
begin
SetLength(aArr,aSize);
end;
これで、コードがコンパイルされます。ほとんどの場合、正常に動作しますが、これは失敗します。
procedure Test;
var
a : array of integer;
begin
SizeArray(a,5);
end;
実際の var パラメーターと正式な var パラメーターの型は同一である必要があり、コンパイラは「整数の配列」と「TIntArray」を同一の型として認識しないためです。
それで、ここに私の質問があります: 呼び出し元が名前付きの型ではなく単純な「整数の配列」を宣言できるように、コンパイラーに var パラメーターをオープン配列ではなく動的配列として識別させる方法はありますか?
前もって感謝します。