案例语句中的Delphi类型常量

And*_*and 7 delphi case-statement

case在Delphi语句中使用类型常量的最优雅(或最不丑陋)的方法是什么?

也就是说,假设您需要声明一个类型化的常量

const
  MY_CONST: cardinal = $12345678;
  ...
Run Code Online (Sandbox Code Playgroud)

那么Delphi编译器就不会接受

case MyExpression of
  MY_CONST: { Do Something };
  ...
end;
Run Code Online (Sandbox Code Playgroud)

但你需要写

case MyExpression of
  $12345678: { Do Something };
  ...
end;
Run Code Online (Sandbox Code Playgroud)

这容易出错,难以更新,也不优雅.

是否有任何技巧可以使编译器插入常量的值(最好通过检查const源代码中的常量值,但可能通过在运行时查找值)?我们假设您不会在运行时更改"常量"的值.

Uli*_*rdt 12

根据您为什么需要输入常量,您可以尝试类似的东西

const
  MY_REAL_CONST = Cardinal($12345678);
  MY_CONST: Cardinal = MY_REAL_CONST;

case MyExpression of
  MY_REAL_CONST: { Do Something };
  ...
end;
Run Code Online (Sandbox Code Playgroud)