D2010でオブジェクトのメンバー変数を反復する方法はありますか?メンバー変数を反復する
答えて
はい、Delphi 2010以降を使用している場合。拡張RTTIを使用して、オブジェクトのフィールド、メソッド、およびプロパティに関する情報を取得できます。シンプルバージョン:
procedure GetInfo(obj: TObject);
var
context: TRttiContext;
rType: TRttiType;
field: TRttiField;
method: TRttiMethod;
prop: TRttiProperty;
begin
context := TRttiContext.Create;
rType := context.GetType(obj.ClassType);
for field in rType.GetFields do
;//do something here
for method in rType.GetMethods do
;//do something here
for prop in rType.GetProperties do
;//do something here
end;
必要なオブジェクトはRTTI
ユニットにあります。
以前のバージョンのDelphiでは、いくつかのプロパティとメソッドについていくつかの情報を得ることができるより限定されたRTTIがいくつかありますが、そのすべてを行うことはできません。
メソッド/フィールド/プロパティは 'published'する必要がありますか? –
@ John:デフォルトでは、拡張RTTIはすべてのフィールドと 'public'または' published'プロパティとメソッドに対して生成されます。これは、 '{$ RTTI}'コンパイラ指令を使って記述したコードで変更することができますが、変更されたバージョンを使用していない限り、標準ライブラリに対してかなり焼き付けられています。 (可能ですが、正式にEmbarcaderoによって落胆しました) –
ボランはRTLの再構築にかなり親切でしたが、最近ポリシーを変更しましたか? –
- 1. JSF/Richfaces反復の反復スコープ変数?
- 2. 反復関数を反復型に変更する
- 3. アイテム変数を反復する
- 4. ビューでセッション変数を反復する
- 5. 変数名の反復
- 6. 将来の反復で以前の反復の変数を使用する
- 7. Javascriptメンバー変数をTypescriptメンバー変数に変換する
- 8. 反復ネイティブの反復関数
- 9. for-EachObjectループ反復変数の問題
- 10. C++可変テンプレート引数の反復
- 11. ファイルの反復と変数検索
- 12. ジェネレータ辞書内の反復変数
- 13. 反復は、例えば、変数の列
- 14. rowtype変数のトラフフィールドの反復
- 15. シンボル変数を反復可能変数に変換するには?
- 16. 異なる変数で同じレートでループを反復する
- 17. 反復子を返す関数を "適切な反復可能な"反復関数に変換する標準的な方法は?
- 18. Ruby - ループを反復しながら変数を保護する
- 19. forループを反復するファイルに変数を書き込む
- 20. 反復中にオブジェクトを変更する
- 21. 反復中にリストを変更する
- 22. Python反復関数
- 23. 関数の反復
- 24. 反復でクリックして反復する
- 25. 2番目の変数の反復を最初にリンクする
- 26. ng-repeatの各反復後に変数を更新する
- 27. else if条件内で変数を反復するか?
- 28. js変数配列を反復するには?
- 29. Powershell - 変数を動的に反復する
- 30. SCSSのテーマ変数ファイルを反復する
どのバージョンのデルファイを使用していますか? – RRUZ
私はDelphi 2010を使用しています。 –