6

次のように、Delphi 5 でカスタム値を使用して列挙型を宣言することは可能ですか?:

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

ありがとう!

4

4 に答える 4

5

古い Delphis では、次のことができます。

type
  MyEnum = (meUnused1, meVal1, meUnused2, meVal2);
于 2010-09-06T11:53:03.250 に答える
3

古いバージョンの Delphi (<= D5 IIRC) を使用している場合、これを行うことはできません。列挙型を定数に置き換えることができますか?何かのようなもの

const
  meVal1 = 1;
  meVal2 = 3;

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

残念ながら、コンパイラは列挙型の場合ほど多くのエラー チェックを行うことができません。

于 2010-09-06T08:16:44.553 に答える
3

これは、この記事によれば合法です。Delphi の初期のバージョンでは、値の指定がサポートされていなかったことを思い出します。

受け取った「コンパイラ エラー」を提供すると役立つ場合があります。また、どのバージョンの Delphi を使用していますか?

于 2010-09-06T07:54:46.403 に答える
2

Ulrich による回答のやや醜い拡張として、次のようなことができます。

type
  TMyEnum = (meVal1, meVal2);

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

そしてそれらに次のようにアクセスします

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

確かにきれいではありませんが、少なくともそのようにすることで、以前のバージョンの Delphi のコンパイラ エラー チェックをもう少し行うことができます。

于 2010-09-06T08:52:38.837 に答える