我正在尝试调整作为参数传递的某个类的数组大小,例如:
procedure Resize(MyArray: Array of TObject);
begin
SetLength(MyArray, 100);
end;
然而,这会引发一个“E2008 不兼容的类型”错误。您不能这样做(我见过一些传言,但没有官方文档),还是我做错了什么?
您没有明确定义类型。因此,编译器在匹配类型时会出现问题。如果您像这样定义类型:
type
TObjectArray = array of TObject;
毫无疑问,你应该使用一个var参数,这是由Mghie提出的建议,因为调整大小可能会导致指针发生变化。
procedure Resize(var MyArray: TObjectArray);
begin
SetLength(MyArray, 100);
end;