2

コードベースのコンポーネント ファイルには次のものがあります。

{$IFDEF ADO}
FDatabase : TADODatabase;
{$ELSE}
FDatabase : TODBCDatabase;
{$ENDIF}

その理由は、さまざまなレガシー アプリケーションで、いずれかのタイプのデータベース接続と一連のクラスが使用されるためです。

ただし、新しいマシンの構成中に、条件が考慮されていないようです。プロジェクト設定では、「ADO;DEBUG」と表示されていますが、上記のコードを代わりに odbc タイプでコンパイルします。

奇妙なことは、それが一貫していないということです。同じプロジェクトの一部として構築された 2 つの異なるユニットは、別々の設定を使用します。つまり、ある場所では条件文が表示され、別の場所では表示されません。

間違ってコンパイルされたファイルには、{$UNDEF または同様のディレクティブがなく、ファイルも含まれていません。

ここで何が欠けていますか?

解決済み (うーん) : そうです、Delphi は頭がおかしくなっているだけです。

これらが見つかりました:

どちらも「Platform=BNB」設定について言及しています。診断出力を有効にすると、正確な値が表示されます。そのため、記事に従ってそれを上書きしようとしますが、運が悪く、まだ BNB です。次に、プロジェクト設定に移動し、そこでもオーバーライドできることが判明したので、それも行いますが、まだうまくいきません。

Delphi インストーラーなどによって、オペレーティング システム レベルで「Platform=BNB」環境変数が追加され、それが削除され、Delphi が再起動されたことが判明しました。すべて問題ありません。

まあ、期待できるのと同じように。ただし、まだ Delphi を使用する必要があります。

4

2 に答える 2

2

これらの条件を変更するときは、必ず「すべてビルド」を行う必要があります。

于 2009-08-14T11:35:22.037 に答える
1

1 つのユニットが実際に再コンパイルされていない可能性があります。以下を確認してください。

  • .pas ファイルはプロジェクトに含まれていますか?
  • 検索パスに同じ名前の別のファイル (.pas または .dcu) がありますか? IDE がコンパイラとは異なるファイルを認識している可能性があります。
  • ファイルは実際にコンパイルされていますか? .pas ファイルと .dcu ファイルのタイムスタンプを比較します。
  • 別のプラットフォーム用にコンパイルしますか? プラットフォームが「AnyCPU」でない限り、一部のコンパイラ オプションは渡されません。

このような問題が発生するたびに、「すべてビルド」ですべての古い .dcus が削除されない場合に備えて、プロジェクトとコンポーネント フォルダー内のすべての .dcu ファイルを力ずくで削除します。次の再コンパイルは、問題を解決するか、間違った .dcu が使用されたかどうかを明らかにします。

于 2009-08-14T11:32:31.213 に答える