Delphi 使用RTTIField.SetValue设置指向字段的指针

Delphi 使用RTTIField.SetValue设置指向字段的指针,delphi,field,rtti,Delphi,Field,Rtti,我有一种类型: TControlPointer = ^TControl; 以及类中的私有字段: TMyClass = class(TObject) private FPointer : TControlPointer; end; 当我尝试使用RTTI设置FPointer的值时: procedure SetControlPointer(pControl : TControlPointer); [...] RTTIField.SetValue(Self,pControl); 编译说 [

我有一种类型:

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”和“tControl指针”

有什么想法吗


谢谢

错误只是告诉您,
RTTIField.SetValue
希望传递一个
TValue
。因此,我想您只需要将指针放入
TValue

TValue.From<TControlPointer>(Self.pControl)

我可以将TControl传递给SetControlPointer(pControl:TControl)和SetValue(Self,@pControl)。但我不知道传递整个TControl是否是个好主意。TControl(以及每个对象)是指针。你真的需要使用指针指向指针吗?@MBo如果你想修改objectIt works中的一个字段,你可能会这样做!如何从RTTIField.GetValue(Self)返回我的TControlPointer?使用
AsType(…)
传递
TValue
<代码>TValue是RTTI的基础。您需要学习它。TControlPointer.From(RTTIField.GetValue(Self))不起作用。不,这会生成一个新的TValue。卓越!非常感谢你!
TValue.From(Self.pControl)