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 中不支持提供值。

提供您收到的“编译器错误”可能会有所帮助。另外,您使用的是什么版本的Delphi?

于 2010-09-06T07:54:46.403 回答
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 回答
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 回答