2010-09-06 41 views

回答

2

根據此article這是合法的。我記得在Delphi的早期版本中提供的值不被支持。

它可能有助於提供您收到的「編譯器錯誤」。另外,你使用的是什麼版本的Delphi?

+0

這確實應該是合法的,另見:http://docwiki.embarcadero.com/RADStudio/2010/en/Simple_Types#Enumerated_Types_with_Explicitly_Assigned_Ordinality – Otherside 2010-09-06 07:59:16

+0

謝謝,我使用D5。現在我看到它不支持這個功能......哇... – SomeOne 2010-09-06 09:12:43

2

如果你有一個老版本的德爾福(< = D5 IIRC),你不能這樣做。也許你可以用常量替換枚舉?類似於

const 
    meVal1 = 1; 
    meVal2 = 3; 

type 
    TMyEnum = Byte; // or Integer or ... - depends on your needs. 

不幸的是,編譯器無法像使用枚舉類型那樣爲您執行儘可能多的錯誤檢查。

2

作爲一個有點醜陋擴展烏爾裏希的答案,你可以這樣做以下:

type 
    TMyEnum = (meVal1, meVal2); 

const 
    MY_ENUM_VALS: array[TMyENum] of integer = (1, 3); 

,並訪問他們作爲

if (aVal = MY_ENUM_VALS[meVal2]) then... 

不漂亮,我承認,但至少這樣你可以爲那些早期版本的Delphi獲得更多的編譯器錯誤檢查。

4

在老DELPHIS你可以做

type 
    MyEnum = (meUnused1, meVal1, meUnused2, meVal2);