使用RTTIField.SetValue将指针设置为字段

时间:2014-11-27 18:03:10

标签: delphi field rtti

我有一个类型:

TControlPointer = ^TControl;

班级中的私人领域:

TMyClass = class(TObject)
  private
  FPointer : TControlPointer;
end;

当我尝试使用RTTI设置FPointer的值时:

procedure SetControlPointer(pControl : TControlPointer);
[...]
RTTIField.SetValue(Self,pControl);

编译说 [dcc32错误] myunit.pas(xxx):E2010不兼容的类型:'TValue'和'TControlPointer'

有什么想法吗?

谢谢

1 个答案:

答案 0 :(得分:0)

错误只是告诉您RTTIField.SetValue期望传递TValue。所以我想你只需要将指针放入TValue

TValue.From<TControlPointer>(Self.pControl)

您传递给RTTIField.SetValue的内容。

您可以让编译器推断出类型并简单地写

TValue.From(Self.pControl)