这个问题已经有一个答案在这里:

使用德尔菲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列的串与枚举的名字,但我找到这个肮脏的解决方案。任何人都可以点我在正确的方向或是我想的东西不可能在这里?

有帮助吗?

解决方案

我看不到任何差异之间段,但是假设你有没有东西像"将=(x=1,y=2);".这将防止从德尔福产生RTTInformation.这是一个编译器限制,至少直到D2010.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top