2010-12-09 8 views
1

レコードの要素またはフィールドのリストを取得することは可能ですか? は、タイプ情報を使用してクラスの公開プロパティのリストに似ていますか?レコードの要素フィールドをリストする

ありがとうございます!

+2

特にこの質問のような機能は、特定の問題(RTTIは、Delphi 2010年にオーバーホールされた)についての質問に、あなたの質問にDelphiのバージョンを含めることは常に賢明です。 –

答えて

8

delphiのバージョンに応じて、delphi 2010を使用している場合、新しいrtti拡張機能を使用することができます。

チェックこのコード

program ProjectTestRtti; 

{$APPTYPE CONSOLE} 

uses 
    Rtti, 
    SysUtils; 

type 
    MyRecord=record 
    Field1 : integer; 
    Field2 : boolean; 
    Field3 : string; 
    end; 

var 
ctx : TRttiContext; 
t  : TRttiType; 
field : TRttiField; 
begin 
try 
    ctx := TRttiContext.Create; 
    for field in ctx.GetType(TypeInfo(MyRecord)).GetFields do 
    begin 
     t := field.FieldType; 
     writeln(Format('Field : %s : Type : %s',[field.Name,field.FieldType.Name])); 
    end; 
except 
    on E: Exception do 
     Writeln(E.ClassName, ': ', E.Message); 
end; 

    Readln; 
end. 
+1

私はDelphi 2006を使っています。 – Rick