如何确定变量的值是否在类型声明的范围内。
例如
Type
TManagerType = (mtBMGR, mtAMGR, mtHOOT);
...
var
ManagerType: TManagerType;
....
procedure DoSomething;
begin
if (ManagerType in TManagerType) then
DoSomething
else
DisplayErrorMessage;
end;
谢谢,彼得。
最佳答案
InRange: Boolean;
ManagerType: TManagerType;
...
InRange := ManagerType in [Low(TManagerType)..High(TManagerType)];
正如Nickolay O.所指出的-上面的布尔表达式直接对应于:
(Low(TManagerType) <= ManagerType) and (ManagerType <= High(TManagerType))
编译器不会针对基于单个子范围的立即集检查成员身份进行优化。因此,[过时]优化的代码将不太美观。