7

caseDelphiのステートメントで型付き定数を使用する最もエレガントな (または最も醜くない) 方法は何ですか?

つまり、この質問では、次のように型付き定数を宣言する必要があると仮定します。

const
  MY_CONST: cardinal = $12345678;
  ...

その場合、Delphi コンパイラは受け入れません。

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

しかし、あなたは書く必要があります

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

これはエラーが発生しやすく、更新が難しく、洗練されていません。

constコンパイラに定数の値を挿入させるために使用できるトリックはありますか (できれば、ソース コード内の定数の値をチェックすることによって、実行時に値を検索することによって)? ここでは、実行時に「定数」の値を変更しないことを前提としています。

4

3 に答える 3

12

定数を入力する必要がある理由に応じて、次のようなものを試すことができます

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

case MyExpression of
  MY_REAL_CONST: { Do Something };
  ...
end;
于 2010-06-08T17:44:44.177 に答える
4

定数の値を変更しない場合は、型付き定数である必要はありません。コンパイラは、宣言した数値を取得して、それを割り当てた変数またはパラメーターに正しく配置できます。型付き定数は一種のハックであり、実際には変数として実装されているため、コンパイラはコンパイル時に値を修正する必要がある定数としてそれらを使用できません。

于 2010-06-08T17:04:43.077 に答える
0

型付き定数は実際には静的変数(および割り当て可能) であり、定数を期待する case ステートメントでは使用できないため、型付き定数は case ステートメントでは使用できません。

于 2010-06-08T17:30:58.863 に答える