使用RTTI从类中获取常量字段

Esb*_*sen 3 delphi rtti

我可以枚举类中的常量(const)吗?

我试过了

MyClass = class
const
  c1 = 'c1';
  c2 = 'c2';
  c3 = 'c3';
end;

procedure GetConst();
var
  ctx: TRttiContext;
  objType: TRttiType;
  field: trttifield;
  s: string;
begin
  ctx := TRttiContext.Create;
  objType := ctx.GetType(MyClass.ClassInfo);
  for field in objType.GetDeclaredFields do
    s:= field.Name;
end;
Run Code Online (Sandbox Code Playgroud)

我想得到c1,c2,c2.

这可能吗?

编辑:我想要做的是为一些外部符号定义一些键(对于cad程序)

symbol1=class
    const
    datafield1='datafield1';
    datafield2='datafield2';
end;
symbol2=class
    const
    datafield21='datafield21abc';
    datafield22='datafield22abc';
end
Run Code Online (Sandbox Code Playgroud)

我不喜欢使用字段,因为我不想分隔声明和初始化.我无法使用枚举,因为我无法将值定义为字符串.

Dav*_*nan 5

你无法通过RTTI获得这些常量.我怀疑你最好的解决方案是使用属性.这不仅具有实际工作的好处,我认为这对您的问题来说更简洁,更简单.