次のように、Delphi 5 でカスタム値を使用して列挙型を宣言することは可能ですか?:
type
MyEnum = (meVal1 = 1, meVal2 = 3); // compiler error
ありがとう!
古い Delphis では、次のことができます。
type
MyEnum = (meUnused1, meVal1, meUnused2, meVal2);
古いバージョンの Delphi (<= D5 IIRC) を使用している場合、これを行うことはできません。列挙型を定数に置き換えることができますか?何かのようなもの
const
meVal1 = 1;
meVal2 = 3;
type
TMyEnum = Byte; // or Integer or ... - depends on your needs.
残念ながら、コンパイラは列挙型の場合ほど多くのエラー チェックを行うことができません。
これは、この記事によれば合法です。Delphi の初期のバージョンでは、値の指定がサポートされていなかったことを思い出します。
受け取った「コンパイラ エラー」を提供すると役立つ場合があります。また、どのバージョンの Delphi を使用していますか?
Ulrich による回答のやや醜い拡張として、次のようなことができます。
type
TMyEnum = (meVal1, meVal2);
const
MY_ENUM_VALS: array[TMyENum] of integer = (1, 3);
そしてそれらに次のようにアクセスします
if (aVal = MY_ENUM_VALS[meVal2]) then...
確かにきれいではありませんが、少なくともそのようにすることで、以前のバージョンの Delphi のコンパイラ エラー チェックをもう少し行うことができます。