我可以從類中枚舉常量(const)嗎?使用RTTI從類中獲取常量字段
我已經試過
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;
我想獲得C1,C2,C2。
這可能嗎?
編輯: 我想要做的就是定義一些外部符號某些鍵(CAD程序)
symbol1=class
const
datafield1='datafield1';
datafield2='datafield2';
end;
symbol2=class
const
datafield21='datafield21abc';
datafield22='datafield22abc';
end
我不喜歡,因爲我不喜歡單獨declareration使用字段這個和初始化。 我無法使用枚舉,因爲我無法將該值定義爲字符串。
可能不是。編譯時可能沒有更多的常量,而是立即值。還有一點意義分別 –
kkep他們,如果你做了一個枚舉,你可以TypInfo'加上'你'uses'條款,然後使用'GetEnumName'和'GetEnumValue'字符串和序數值之間的轉換。 –
但枚舉值只能是整數的權利?我需要字符串 –