Delphi整数范围的case语句

10

我有一个函数,它接收一个整数值作为步骤值。我想要测试的有以下5个条件:

  • 值=0
  • 值=1
  • 值=-1
  • 值>1
  • 值<-1

目前这个函数是用一系列if语句实现的,我想改成用case语句。对于特定的值的情况或者一个有限范围内的情况(例如1到10),我没有问题,但是如何编写代表Value >1或Value <-1的case呢?

1个回答

27
var
  MyValue: integer;

...

case MyValue of
  Low(Integer)..-2:
    beep;
  -1:
    beep;
  0:
    beep;
  +1:
    beep;
  2..High(Integer):
    beep;
end;

啊,太好了!我知道肯定有办法做到,但它不是很明显。谢谢。 - HMcG
太好了,我不知道 case 支持大于 255 的间隔,我把它们和集合混淆了。 - opc0de
2
可能需要将这个重构为 low(NativeInt)high(NativeInt) 在 XE2 中 ;-) - David Heffernan
5
很少。如果一个变量被定义为Integer,那就没问题了。实际上,Integer永远是32位(我忽略了D1),而NativeInt则是有所变化的。写low(Tag)会更加稳健,我认为这种写法可以通过编译。 - David Heffernan
2
@Downvoter(给负评的人)... OP(楼主)在问题中没有提到过“Pascal”,但明确提到了“Delphi”,并将问题标记为“delphi”。你可能需要暂时走出光线,因为它似乎刺到了你的眼睛。;) - Deltics
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接