Delphi中的枚举类型与自定义值

6
在Delphi 5中,可以这样声明具有自定义值的枚举吗?
type
  MyEnum = (meVal1 = 1, meVal2 = 3); // compiler error

谢谢!

4个回答

5
在旧版Delphi中,您可以执行以下操作:
type
  MyEnum = (meUnused1, meVal1, meUnused2, meVal2);

3
如果您使用的是旧版本的Delphi(<= D5 IIRC),则无法执行此操作。也许您可以将枚举替换为常量?类似这样的内容:
const
  meVal1 = 1;
  meVal2 = 3;

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

不幸的是,编译器在处理这种类型时无法像枚举类型那样为您进行更多的错误检查。


3

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

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


这确实是合法的,参见:http://docwiki.embarcadero.com/RADStudio/2010/en/Simple_Types#Enumerated_Types_with_Explicitly_Assigned_Ordinality - Otherside

2

作为 Ulrich 回答的一个有点丑陋的扩展,您可以执行以下操作:

type
  TMyEnum = (meVal1, meVal2);

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

并且可以访问它们作为

if (aVal = MY_ENUM_VALS[meVal2]) then...

我承认这不太好看,但至少这样可以为早期版本的Delphi提供更多的编译器错误检查。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接