Можно объявить перечисления с пользовательскими значениями в 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 вы используете?
Если у вас установлена более старая версия Delphi (< = D5 IIRC), вы не можете этого сделать. Может быть, вы можете заменить enum на константы? Что-то вроде
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
спасибо, я используя D5. Теперь я вижу, что это не поддерживает эту функцию ... wah ... – SomeOne