Delphi:对类型 "array of TObject"的参数进行 SetLength()

标签 delphi arrays object resize

我正在尝试调整作为参数传递的某个类的数组的大小,例如

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/

相关文章:

javascript - 如何在javascript中将元素嵌套子元素转换为多维关联数组?

delphi - 检测 TWebModule 内存泄漏

c# - 来自多个数组的foreach循环c#

java - 使用自定义类在数组中添加项目

ruby - 在 Ruby 中扫描字符串数组以查找匹配项

objective-c - 在函数中获取当前对象?

java - 直接在java中初始化对象

Delphi:FastMM虚拟内存管理引用?

android - FireDac Firebird 和 Android

delphi - 刷新 cxGrid 中的颜色