有没有办法将字段的名称作为字符串?例如,如果我有一个班级
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"。这可能吗?
答案 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;