属性setter可以使用open数组参数吗?

时间:2015-10-27 09:37:58

标签: delphi

文档说动态数组可以使用开放数组参数传递给函数/过程。

例如,以下工作,按照文档。

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是否可以使用开放数组参数?

1 个答案:

答案 0 :(得分:4)

  

属性设置器可以使用开放数组参数吗?

没有。

包含新属性值的参数类型必须与属性的类型兼容。开放数组不是一种类型。你的属性设置器必须这样写:

procedure SetIntegerArray(const Value: TAInteger);