在Delphi 5中,可以这样声明具有自定义值的枚举吗?
type
MyEnum = (meVal1 = 1, meVal2 = 3); // compiler error
谢谢!
type
MyEnum = (meUnused1, meVal1, meUnused2, meVal2);
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提供更多的编译器错误检查。