デフォルトでは、Delphi 2 がリリースされて以来、IIRC は無効になっています。実際のオプションは Delphi 1 のダイアログで提供されていましたが、次のバージョンでデフォルトが有効から無効に変更されたという騒ぎを思い出したようです。とはいえ、かなり時間が経っているので、デフォルトが逆になったときに 1 つオフになる可能性があります。D3だったかも。代入可能な定数は、古い Turbo Pascal 時代からの持ち越しであり、実際の静的変数型の欠如の代用です。これらは、初期化された (グローバル) 変数である、より優れたソリューションに置き換えられました (「 」を参照Declaring Variables
)。
書き込み可能な定数を実際に使用する必要がある場合は、グローバル設定を変更するのではなく、必要な最小の (最も制限された) スコープでのみ使用する必要があります。定数は、可能な限り正確に (定数) する必要があります。書き込み可能な定数を使用する一般的な理由は、呼び出し間で値を保持する必要がある特定のスコープ (プロシージャ、関数、またはユニットなど) 内のローカル変数が必要な場合であり、通常はそれを行うためのより良い方法があります。一部のオプションは、オブジェクト フィールド (メンバー変数)、または範囲が限定された初期化変数 (implementation
ユニットのセクション内などの制限された領域で表示され、開始値に初期化される変数) です。
割り当て可能な定数は、実行時に値を変更できることを意味し、実際にはほとんど役に立ちません。真の定数とはまさにそれ (定数) であり、変更を許可するべきではありません。
型付き定数についても同じことが言えます。これらを使用する実際の必要性があるはずであり、これらの宣言のように、定数配列、レコード、ポインター、または手続き型を格納していない限り、ほとんどありません。
const
TIntLookupArray: array[0..1] of Integer = (1, 2);
TErrorMsgs: array[0..1] of string = ('Invalid input', 'Invalid sequence');
そもそも型付き定数を使用している理由はありますか? 使用するだけであれば、この問題は発生しません
const clicks = 1;
コンパイラに適切な型を決定させます。のサイズであることを確認したい場合は、次のInteger
ような型キャストを使用してください
const clicks = Integer(1);
詳細については、Delphi ドキュメントの docwikiを参照してください。