2010-09-06 4 views

ответ

2

Это законно в соответствии с этим article. Напомню, что в ранних версиях Delphi не поддерживались ценности.

Это может помочь обеспечить полученную вами «ошибку компилятора». Кроме того, какую версию Delphi вы используете?

+0

Это действительно должно быть законным, смотрите также: http://docwiki.embarcadero.com/RADStudio/2010/en/Simple_Types#Enumerated_Types_with_Explicitly_Assigned_Ordinality – Otherside

+0

спасибо, я используя D5. Теперь я вижу, что это не поддерживает эту функцию ... wah ... – SomeOne

2

Если у вас установлена ​​более старая версия Delphi (< = D5 IIRC), вы не можете этого сделать. Может быть, вы можете заменить enum на константы? Что-то вроде

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); 
Смежные вопросы