Перечисления в Delphi с пользовательскими значениями - PullRequest
4 голосов
/ 06 сентября 2010

Можно объявить перечисления с пользовательскими значениями в Delphi 5 следующим образом?:

type
  MyEnum = (meVal1 = 1, meVal2 = 3); // compiler error

Спасибо!

Ответы [ 4 ]

4 голосов
/ 06 сентября 2010

В старых Delphis вы можете сделать

type
  MyEnum = (meUnused1, meVal1, meUnused2, meVal2);
3 голосов
/ 06 сентября 2010

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

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

2 голосов
/ 06 сентября 2010

Как некрасивое продолжение ответа Ульриха, вы могли бы сделать что-то вроде следующего:

type
  TMyEnum = (meVal1, meVal2);

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

и получить к ним доступ как

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

Не очень, я вам дано, по крайней мере, таким образом вы получите немного больше проверки ошибок компилятора для этих более ранних версий Delphi.

2 голосов
/ 06 сентября 2010

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

const
  meVal1 = 1;
  meVal2 = 3;

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

К сожалению, компилятор не может выполнить для вас столько же проверок ошибок, сколько с типом enum.

...