有可能在Delphi 5聲明自定義值枚舉這樣?:枚舉在Delphi中使用自定義值
type
MyEnum = (meVal1 = 1, meVal2 = 3); // compiler error
謝謝!
有可能在Delphi 5聲明自定義值枚舉這樣?:枚舉在Delphi中使用自定義值
type
MyEnum = (meVal1 = 1, meVal2 = 3); // compiler error
謝謝!
根據此article這是合法的。我記得在Delphi的早期版本中提供的值不被支持。
它可能有助於提供您收到的「編譯器錯誤」。另外,你使用的是什麼版本的Delphi?
如果你有一個老版本的德爾福(< = D5 IIRC),你不能這樣做。也許你可以用常量替換枚舉?類似於
const
meVal1 = 1;
meVal2 = 3;
type
TMyEnum = Byte; // or Integer or ... - depends on your needs.
不幸的是,編譯器無法像使用枚舉類型那樣爲您執行儘可能多的錯誤檢查。
作爲一個有點醜陋擴展烏爾裏希的答案,你可以這樣做以下:
type
TMyEnum = (meVal1, meVal2);
const
MY_ENUM_VALS: array[TMyENum] of integer = (1, 3);
,並訪問他們作爲
if (aVal = MY_ENUM_VALS[meVal2]) then...
不漂亮,我承認,但至少這樣你可以爲那些早期版本的Delphi獲得更多的編譯器錯誤檢查。
在老DELPHIS你可以做
type
MyEnum = (meUnused1, meVal1, meUnused2, meVal2);
這確實應該是合法的,另見:http://docwiki.embarcadero.com/RADStudio/2010/en/Simple_Types#Enumerated_Types_with_Explicitly_Assigned_Ordinality – Otherside 2010-09-06 07:59:16
謝謝,我使用D5。現在我看到它不支持這個功能......哇... – SomeOne 2010-09-06 09:12:43