代码之家  ›  专栏  ›  技术社区  ›  Andreas Rejbrand

case语句中的Delphi类型常量

  •  6
  • Andreas Rejbrand  · 技术社区  · 16 年前

    在应用程序中使用类型化常量最优雅(或最不难看)的方法是什么 case 德尔菲的声明?

    也就是说,对于这个问题,假设您需要声明一个类型化常量,如

    const
      MY_CONST: cardinal = $12345678;
      ...
    

    那么Delphi编译器将不接受

    case MyExpression of
      MY_CONST: { Do Something };
      ...
    end;
    

    但是你需要写

    case MyExpression of
      $12345678: { Do Something };
      ...
    end;
    

    有没有什么技巧可以让编译器插入常量的值(最好是通过在下面检查常量的值) const 在源代码中,但可能在运行时查找值)?我们在这里假设您不会在运行时更改“常量”的值。

    3 回复  |  直到 13 年前
        1
  •  12
  •   Uli Gerhardt    16 年前

    取决于 为什么?

    const
      MY_REAL_CONST = Cardinal($12345678);
      MY_CONST: Cardinal = MY_REAL_CONST;
    
    case MyExpression of
      MY_REAL_CONST: { Do Something };
      ...
    end;
    
        2
  •  4
  •   Mason Wheeler    16 年前

        3
  •  0
  •   Stijn Sanders    16 年前

    类型化常量不能用在case语句中,因为类型化常量实际上更像是静态的 变量 (和可赋值…),因此不能在case语句中使用,该语句需要常量。