如何在 Delphi 5 中创建具有显式值的枚举

How to create an enum with explicit values in Delphi 5

目前我正在将 Delphi (XE) 项目的较高版本重新编译为较低版本 5。

我有多个具有如下显式值的枚举:

type 
  TSize = (ftSmallSize=10, ftMediumSize=15, ftLargeSize=20, ftExtralarge=24)

当我编译这段代码时,出现错误消息:

',' or ')' expected but '=' found

如何在 Delphi 5 中重新编译此代码?

是,在 Delphi 6.

中的枚举 was added 中指定固定(序数)值的选项

可能最简单的解决方法是

type
  TSize = Byte;

const
  ftSmallSize = 10;
  ftMediumSize = 15;
  ftExtraLarge = 24;

显然,您失去了一些类型安全性,但它(很可能)无需任何进一步更改即可编译。

只要确保在定义TSize时选择大小合适的整数类型即可。您应该使它与原始代码中的 SizeOf(TSize) 相同。

您可以将值与枚举类型分离:

type
  TSize = (ftSmallSize, ftMediumSize, ftLargeSize, ftExtralarge);
const
  cSizeValues: array[TSize] of Integer = (10, 15, 20, 24);

或者用 case ASize of 定义函数 GetSizeValue(ASize: TSize) - 这样会更灵活。

像这样使用:

 Edit1.Height := cSizeValues[ftMediumSize];

 Edit1.Height := GetSizeValue(ftMediumSize);