带有自定义值的Delphi中的枚举

时间:2010-09-06 07:43:48

标签: delphi enums delphi-5

可以像这样在Delphi 5中声明带有自定义值的枚举吗?:

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

谢谢!

4 个答案:

答案 0 :(得分:4)

在较旧的Delphis中你可以做到

type
  MyEnum = (meUnused1, meVal1, meUnused2, meVal2);

答案 1 :(得分:3)

根据此article,这是合法的。我记得在早期版本的Delphi中不支持提供值。

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

答案 2 :(得分:2)

如果您有旧版本的Delphi(< = D5 IIRC),则无法执行此操作。也许你可以用常量替换枚举?像

这样的东西
const
  meVal1 = 1;
  meVal2 = 3;

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

不幸的是,编译器不能像使用枚举类型那样为你做错误检查。

答案 3 :(得分:2)

作为Ulrich对答案的一个有点难看的扩展,你可以做类似以下的事情:

type
  TMyEnum = (meVal1, meVal2);

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

并以

的形式访问它们
if (aVal = MY_ENUM_VALS[meVal2]) then...

不是很好,我授予你,但至少在这种情况下你会得到更多的编译器错误检查那些早期版本的Delphi。