【发布时间】:2019-12-13 12:01:23
【问题描述】:
我在我的枚举器类型上定义了一个InRange 函数。如果传递的整数参数可以转换为枚举类型,函数应该返回True。
TMyEnum = (eA, eB);
TMyEnumHelper = record helper for TMyEnum
class function InRange(AValue : integer) : Boolean; static;
end;
...
class function TMyEnumHelper.InRange(AValue : integer) : Boolean;
begin
Result :=
(AValue >= Low(TMyEnum)) and
(AValue <= High(TMyEnum));
end;
在编译时,在(AValue >= Low(TMyEnum)) 行,我收到以下错误:
[dcc32 错误] Unit1.pas(34): E2008 不兼容类型
我做了一些测试,但我真的不明白出了什么问题...... 即:
- 我尝试将
InRange函数的AValue参数类型切换为Byte、ShortInt、Word、SmallInt、LongWord、Cardinal、@9876543333@、 @ 和Int64,但在编译时会引发同样的错误。 - 如果我将枚举数定义为
TMyEnum = 0..1;,则编译不会出错。
【问题讨论】:
标签: delphi enums delphi-xe7