2010-12-09 28 views
1

Est-il possible d'obtenir la liste des éléments ou des champs d'un enregistrement similaire à une liste des propriétés publiées d'une classe via type info?Liste l'élément de l'enregistrement fields

Merci!

+2

Il est toujours sage d'inclure la version Delphi dans votre question, en particulier des questions sur la fonction des questions spécifiques (le RTTI a été refondu en Delphi 2010) comme cette question. –

Répondre

8

En fonction de votre version de Delphi, si vous utilisez Delphi 2010 ou plus récent, vous pouvez utiliser les nouvelles améliorations rtti.

vérifierons ce code

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

Je suis sur Delphi 2006 ... bummer. – Rick