文档说动态数组可以使用开放数组参数传递给函数/过程。
例如,以下工作,按照文档。
type
TAInteger = array of Integer;
function Work(const A: array of Integer): Integer;
begin
Result := Length(A);
end;
但是,下面的代码抱怨E2008 Incompatible types
:
type
TTest = class
private
procedure SetIntegerArray(const Value: array of Integer);
published
property Value: TAInteger write SetIntegerArray;
end;
我很困惑为什么会出现“不兼容的类型”错误,以及property setter是否可以使用开放数组参数?
答案 0 :(得分:4)
属性设置器可以使用开放数组参数吗?
没有。
包含新属性值的参数类型必须与属性的类型兼容。开放数组不是一种类型。你的属性设置器必须这样写:
procedure SetIntegerArray(const Value: TAInteger);