为什么System.Include在属性提供Set时不起作用?
TMyItem = (miOne, miTwo, miThree);
TMyItems = set of TMyItem;
TSomeClass = class
private
FItems: TMyItems;
protected
procedure SetItem(val : TSetItems);
function GetState : TSetItems;
public
property Items : TMyItems read GetMyItems write SetMyItems;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
c: TSomeClass;
begin
c:=TSomeClass.Create;
c.Items:=c.Items + [miTwo]; //WORKS OK
Include(c.Items,miTwo); //COMPILE ERROR
end;
我正在使用Win32 BDS 2006.这是错误,功能还是操作员错误?
谢谢,戴夫
答案 0 :(得分:2)
不同之处在于第一个版本是对属性的赋值,而第二个版本是传递给 var 参数的属性。 Delphi编译器认为将属性(甚至是读/写属性)传递给 var 参数是错误的。我认为这没有任何意义,但这就是它的工作方式。