タイプがあります:
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'
何か案は?
ありがとうございました
エラーは単に、
RTTIField.SetValue
が
TValue
が渡されることを期待していることを示しています。したがって、ポインタを
TValue
に入れるだけでよいと思います
TValue.From<TControlPointer>(Self.pControl)
それが
RTTIField.SetValue
に渡されるものです。
おそらくコンパイラにタイプを推測させて、単純に書くことができます
TValue.From(Self.pControl)