使用Delphi 2007我可以编写以下代码:
interface
TTestType = (ttTest1, ttTest2);
procedure enumName;
var
EnumName: String;
begin
EnumName := GetEnumName(TypeInfo(TTestType), Ord(ttTest1));
end;
这个编译和工作,EnumName在函数末尾包含'ttTest1'。
但是,当我将TTestType改为这样的时候:
interface
TTestType = (ttTest1=1, ttTest2=2);
我的代码突然不再编译了。 [DCC Error] Test.pas(271): E2134 Type 'TTestType' has no type info
现在我可以使用枚举名创建一个const数组字符串,但我发现这是一个肮脏的解决方案。任何人都能指出我正确的方向,还是我在这里尝试一些不可能的事情?
答案 0 :(得分:2)
我认为片段之间没有任何区别,但假设您做了类似“ttype =(x = 1,y = 2);”的操作。这将阻止Delphi生成RTTInformation。至少在D2010之前,这是一个编译器限制。