Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 具有指定值的枚举类型没有TypeInfo,为什么?_Delphi_Rtti_Typeinfo - Fatal编程技术网

Delphi 具有指定值的枚举类型没有TypeInfo,为什么?

Delphi 具有指定值的枚举类型没有TypeInfo,为什么?,delphi,rtti,typeinfo,Delphi,Rtti,Typeinfo,使用Delphi 2007,我可以编写以下代码: interface TTestType = (ttTest1, ttTest2); procedure enumName; var EnumName: String; begin EnumName := GetEnumName(TypeInfo(TTestType), Ord(ttTest1)); end; 这将编译并工作,EnumName在函数末尾包含“ttTest1” 但是,当我将TTestType更改为以下内容时: interf

使用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错误]测试。pas(271):E2134类型“TTestType”没有类型信息


现在我可以用枚举名创建字符串的常量数组,但我发现这是一个肮脏的解决方案。有人能给我指出正确的方向吗?或者我正在尝试一些不可能的事情吗?

我看不出这些代码片段之间有什么区别,但假设您做了类似于“ttype=(x=1,y=2);”的事情。这将阻止Delphi生成RTT信息。至少在2010年之前,这是一个编译器限制。

啊,谢谢,我已经搜索过了,但找不到答案。我的搜索引擎今天好像坏了。