如何确定变量的值是否在类型声明的范围内。
例如

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))


编译器不会针对基于单个子范围的立即集检查成员身份进行优化。因此,[过时]优化的代码将不太美观。

10-05 22:25