字段名称为Delphi XE10 Seattle中的字符串

时间:2016-02-11 09:14:19

标签: delphi delphi-10-seattle

有没有办法将字段的名称作为字符串?例如,如果我有一个班级

type
 TMyClass = Class
  private 
    fMyField:string
  published
    procedure SomeProcedure
end;

在程序SomeProcedure中,我想访问字段fMyField的名称,其中包含

的行。
procedure TMyClass.SomeProcedure;
var
sFieldName:string;
begin
  sFieldName := fMyField.FieldName;
  ShowMessage(sFieldName)
end;

ShowMessage(sFieldName)将显示" fMyField"。这可能吗?

1 个答案:

答案 0 :(得分:3)

在这种情况下,您应该使用Run-time type information(RTTI)TRTTIContext有一个函数GetFields(),它返回有关字段的所有信息

uses System.Rtti;

procedure TMyClass.SomeProcedure;
var 
  LRttiContext: TRTTIContext;
  LRttiType: TRttiType;
  LRttiField: TRttiField;
begin
  LRttiType := LRttiContext.GetType(TMyClass);
  for LRttiField in LRttiType.GetFields do
  begin
    if LRttiField.Parent = LRttiType  then    
      ShowMessage(LRttiField.Name);
  end;
end;