我声明了以下枚举类型,我希望第一个成员的序数值为1(一)而不是通常的0(零) :为什么我使用枚举类型得到“type has no typeinfo”错误
type
TMyEnum = (
meFirstValue = 1,
meSecondValue,
meThirdValue
);
如果我打电话所属类别(),如为GetEnumName一个呼叫的一部分(),我得到一个编译错误:
GetEnumName(TypeInfo(TMyEnum), Ord(aValue));
错误: “E2134:类型 'TMyEnum' 没有所属类别”
这是为什么?
我知道类只有所属类别,如果他们启用或$ M编译器选项编译(一些类是派生,如TPersistent),但我不认为有任何特殊条件对于enum类型有typeinfo。
也许可以通过使用一个子界类型减轻这样做的疼痛: 类型 TMyEnumWithDummy =( meNOTUSED, meFirstValue, meSecondValue, meThirdValue ); TMyEnum = Succ(meNOTUSED)..高(TMyEnumWithDummy); – 2009-09-14 09:45:47
是的,虽然如果你在枚举中有“空白”,那么一个简单的子范围是不够的。在遇到这种情况时,我遇到了问题 - 不幸的是,我对最初的“问题”过分简化了。 但是我也会用你的建议更新答案。 – Deltics 2009-09-14 09:53:28