我正在尝试调整作为参数传递的某个类的数组的大小,例如
procedure Resize(MyArray: Array of TObject);
begin
SetLength(MyArray, 100);
end;
但是,这会引发错误“E2008 不兼容类型”。你真的不能这样做吗(我见过谣言,但没有官方文档)还是我做错了什么?
最佳答案
您没有明确定义类型。所以编译器在匹配它们时存在问题。如果您定义类型如下:
type
TObjectArray = array of TObject;
毫无疑问,(感谢 Mghie)您应该使用 var 参数,因为调整可能会导致指针发生变化。
procedure Resize(var MyArray: TObjectArray);
begin
SetLength(MyArray, 100);
end;
关于Delphi:对类型 "array of TObject"的参数进行 SetLength(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1642350/