Delphi整数范围的case语句

HMc*_*McG 10 delphi

我有一个函数,它传递一个整数值,表示一个步长值.我想测试5个单独的条件:值= 0值= 1值= -1值> 1值<-1

目前,这是作为一组if语句实现的,我想为case语句更改它.我对特定值的情况没有问题,甚至是有限的范围(例如1..10),但是我如何编写表示值> 1或值<-1的情况?

And*_*and 22

var
  MyValue: integer;

...

case MyValue of
  Low(Integer)..-2:
    beep;
  -1:
    beep;
  0:
    beep;
  +1:
    beep;
  2..High(Integer):
    beep;
end;
Run Code Online (Sandbox Code Playgroud)

  • @Downvoter很难.如果一个变量被输入为"整数",那就没问题了.事实上,`Integer`总是32位(我忽略了D1)和`NativeInt`是变化的.编写`low(Tag)`会更加健壮,我认为编译得很好. (5认同)
  • +1可能必须在XE2中将其重构为"low(NativeInt)"和"high(NativeInt)";-) (2认同)
  • @Downvoter ...... OP在任何地方都没有提到"Pascal",但在问题中特别提到"Delphi",并将问题标记为"delphi".你可能想要走出光明一分钟......它似乎在你眼中.;) (2认同)