列出Record的元素\字段

Ric*_*ick 1 delphi delphi-2006

是否可以通过类型信息获取记录的元素或字段列表类似于类的已发布属性的列表?

谢谢 !

RRU*_*RUZ 8

取决于你的delphi版本,如果你使用delphi 2010更新,你可以使用New 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.
Run Code Online (Sandbox Code Playgroud)