【问题标题】:Delphi case statement for integer rangesDelphi 整数范围的 case 语句
【发布时间】:2011-11-29 12:24:42
【问题描述】:

我有一个函数,它被传递一个整数值,代表一个步长值。 我要测试 5 个单独的条件: 值 =0 值 =1 值 =-1 值 >1 值

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

【问题讨论】:

    标签: delphi


    【解决方案1】:
    var
      MyValue: integer;
    
    ...
    
    case MyValue of
      Low(Integer)..-2:
        beep;
      -1:
        beep;
      0:
        beep;
      +1:
        beep;
      2..High(Integer):
        beep;
    end;
    

    【讨论】:

    • 啊,完美!我知道必须有某种方法可以做到这一点,但这并不是很明显。谢谢。
    • 很好,这种情况支持大于 255 的间隔,我将它们与集合混淆了
    • +1 可能需要在 XE2 中将其重构为 low(NativeInt)high(NativeInt) ;-)
    • @Downvoter 几乎没有。如果将变量键入为Integer,那就没问题了。事实上,Integer 始终是 32 位(我忽略了 D1),而 NativeInt 是变化的。写low(Tag) 会更健壮,我认为它编译得很好。
    • @Downvoter ... OP 在任何地方都没有提到“Pascal”,但在问题中特别提到了“Delphi”并将问题标记为“delphi”。你可能想离开灯光一分钟……它似乎进入了你的眼睛。 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    相关资源
    最近更新 更多