可以像这样在 Delphi 5 中声明具有自定义值的枚举吗?:
type
MyEnum = (meVal1 = 1, meVal2 = 3); // compiler error
谢谢!
在较旧的 Delphis 中,您可以这样做
type
MyEnum = (meUnused1, meVal1, meUnused2, meVal2);
根据这篇文章这是合法的。我记得在早期版本的 Delphi 中不支持提供值。
提供您收到的“编译器错误”可能会有所帮助。另外,您使用的是什么版本的Delphi?
如果你有旧版本的 Delphi (<= D5 IIRC) 你不能这样做。也许您可以用常量替换枚举?就像是
const
meVal1 = 1;
meVal2 = 3;
type
TMyEnum = Byte; // or Integer or ... - depends on your needs.
不幸的是,编译器不能像使用枚举类型那样为您做那么多的错误检查。
作为对 Ulrich 答案的一个有点丑陋的扩展,您可以执行以下操作:
type
TMyEnum = (meVal1, meVal2);
const
MY_ENUM_VALS: array[TMyENum] of integer = (1, 3);
并以
if (aVal = MY_ENUM_VALS[meVal2]) then...
不漂亮,我同意你,但至少这样你就可以对那些早期版本的 Delphi 进行更多的编译器错误检查。