使用 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 参数的类型必须相同,并且编译器不会将“整数数组”和“TIntArray”识别为相同类型。
所以,这是我的问题:有什么方法可以让编译器将我的 var 参数识别为动态数组而不是开放数组,以便调用者可以声明一个简单的“整数数组”而不是一些命名类型?
提前致谢。