delphi - RTTIField.SetValueを使用してポインタをフィールドに設定します

原文 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'

何か案は?

ありがとうございました
答え
エラーは単に、RTTIField.SetValueTValueが渡されることを期待していることを示しています。したがって、ポインタをTValueに入れるだけでよいと思います

TValue.From<TControlPointer>(Self.pControl)


それがRTTIField.SetValueに渡されるものです。

おそらくコンパイラにタイプを推測させて、単純に書くことができます

TValue.From(Self.pControl)
関連記事

delphi - Delphiのコンパイル速度を向上させる方法は?

delphi - 新しい見積もりの​​アイテムの値レートをアプリに設定する方法

json - 複雑なjsonオブジェクトでのTJSONObjectメモリリーク

delphi - ショートカットは、フォーカスのあるフォームではなく、最初に作成されたフォームでTActionをトリガーします

multithreading - TThread.WaitForは連続する複数のスレッドで

delphi - DelphiでSOAPメッセージを受信するための最大サイズはありますか?

delphi - mitabで読み取られたMapInfoファイルのポリラインと曲線をどのように区別できますか?

delphi - FireDac TFDCommandを使用してautoincフィールドで挿入操作を実行し、生成された値を取得する

forms - Delphi-TFormとジェネリックス

delphi - Delphi 2010-ファイルは使用中ですか?