【发布时间】:2011-04-08 15:58:36
【问题描述】:
可以像这样在 Delphi 5 中用自定义值声明枚举吗?:
type
MyEnum = (meVal1 = 1, meVal2 = 3); // compiler error
谢谢!
【问题讨论】:
可以像这样在 Delphi 5 中用自定义值声明枚举吗?:
type
MyEnum = (meVal1 = 1, meVal2 = 3); // compiler error
谢谢!
【问题讨论】:
根据article,这是合法的。我记得在早期版本的 Delphi 中不支持提供值。
提供您收到的“编译器错误”可能会有所帮助。另外,您使用的是什么版本的 Delphi?
【讨论】:
如果您有旧版本的 Delphi (
const
meVal1 = 1;
meVal2 = 3;
type
TMyEnum = Byte; // or Integer or ... - depends on your needs.
不幸的是,编译器无法像使用 enum 类型那样为您做更多的错误检查。
【讨论】:
作为对 Ulrich 答案的一个有点丑陋的扩展,您可以执行以下操作:
type
TMyEnum = (meVal1, meVal2);
const
MY_ENUM_VALS: array[TMyENum] of integer = (1, 3);
并以如下方式访问它们
if (aVal = MY_ENUM_VALS[meVal2]) then...
不漂亮,我承认你,但至少这样你可以对那些早期版本的 Delphi 进行更多的编译器错误检查。
【讨论】:
在较旧的 Delphis 中,您可以这样做
type
MyEnum = (meUnused1, meVal1, meUnused2, meVal2);
【讨论】: