Delphi 2007 とすべてのパッチとアップデートを使用しています。
2 つの異なるプロジェクトで使用されるファイルがあります。そのファイルには手順があり、次のように簡略化します。
procedure MyProcedure;
const
UniqueValue: integer = 0;
begin
//some code
Inc(UniqueValue);
//some more code
end;
定数に割り当てることができないため、Inc() コマンドは失敗するはずです。あるプロジェクトでは、その旨のエラーが表示されます (そのプロジェクトを「Accurate」と呼びます)。他のプロジェクトでは、エラーは発生しません (「偽物」と呼びます)。また、警告も表示されません。コンパイラがこの不正なコードを通過させる理由がわかりません。
プロジェクトBogusで試したことは次のとおりです。
1 - 行の途中で「slkdjflskdjf」と入力するなど、明らかなエラーを導入する
結果: エラーが表示されます。これは、このファイルを実際にコンパイルしようとしていることを示しています。
2 - .DCU を削除し、プロジェクトを再構築します
結果: .DCU が再生成され、プロジェクトがこの誤ったコードを本当にコンパイルしていることを再度証明します。
なぜこの動作が発生するのかについて考えている人はいますか? より具体的には、なぜあるプロジェクトでは発生し、別のプロジェクトでは発生しないのでしょうか? 定数への割り当てを許可するあいまいなコンパイラ オプションはありますか?
最後に 1 つ: どちらのプロジェクトも Delphi 5 から変換されています。Delphi 5 で同様のコードを使用すると、どちらも正常にコンパイルされます。
編集:ご協力ありがとうございます。割り当て可能な型付き定数ディレクティブを変更した後、両方のプロジェクトで一貫した動作を得ることができます。今日、新しいことを学びました...