我声明了以下枚举类型,我希望第一个成员的序数值为1(一个),而不是通常的0(零):
type
TMyEnum = (
meFirstValue = 1,
meSecondValue,
meThirdValue
);
如果我致电 TypeInfo(),例如作为对 GetEnumName()的调用的一部分,出现编译器错误:
GetEnumName(TypeInfo(TMyEnum), Ord(aValue));
错误:“E2134:类型'TMyEnum'没有类型信息”
为什么是这样?
我知道,只有在启用 $ M 编译器选项或(从某些类(例如 TPersistent 派生))编译的情况下,类才具有typeinfo,但我认为为typeinfo设置不存在任何特殊条件枚举类型。
最佳答案
不连续的枚举,以及不是从零开始的枚举,都没有typeinfo。要实现typeinfo,由于向后兼容性问题,它必须采用与现有tkEnumeration
不同的格式。
我考虑过为Delphi 2010实现tkDiscontiguousEnumeration
(或可能命名更好的成员),但是考虑到它们的相对稀缺性以及枚举的困难,好处似乎很小-您如何有效地对范围进行编码?有些编码在某些情况下更好,而在另一些情况下则更糟。
关于delphi - 为什么我得到枚举类型的 “type has no typeinfo”错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1420562/