我聲明瞭以下枚舉類型,我希望第一個成員的序數值爲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