如何在 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);
目前我正在将 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);