2011-07-04 7 views
4

私は自分のユニットに他のユニットを含めています。アプリケーションをビルドした後、それらのユニットから大量の警告を受け取ります。その額は非常に大きいので、私は自分の警告をリストに載せることに問題があります。 ;-)ユニットを変更せずに、指定されたユニットからの警告を無効にするにはどうすればよいですか?

これらの警告を無効にするコンパイラ指令がありますか?しかし、私は何らかの形でこれらのユニットを変更したくないことに注意してください。

unit MyUnit; 

interface 

uses 
    UnitA, {$WARN EMIT_WARNNIGS OFF} UnitB, {$WARN EMIT_WARNNIGS ON} UnitC, UnitD. 

implementation 

uses 
    UnitE, {$WARN EMIT_WARNNIGS OFF} UnitF, UnitG, {$WARN EMIT_WARNNIGS ON} UnitH. 

これは私が持っていると思い架空のコンパイラディレクティブです、または多分それが存在していて、私はそれについて知らない:私はこのような何かを達成したいと思いますか?

お時間をいただきありがとうございます。

+0

をあなたがしようとした持ち '使用しています...、{$警告をオフ} UnitB {$警告をオン} .. 「? –

+2

対抗の質問:なぜあなたはこれらの警告に対処したいのですか... ugh ... khm ...それらを修正しますか? –

+0

それを修正するか、それをやめてください!私が信じていれば、何らかの形で避けることができれば、警告された膨大なコードを使用したくはありません。さまざまなエラーをカウントし、違反にアクセスして時間を無駄にすることができます。 –

答えて

7

警告をオフにするコンパイラ指令がありますが、どちらのプロジェクトオプションでも設定できるのは、それがすべてのユニットに適用されるか、またはユニット自体に適用されます。その場合、それだけでは、そのユニットに適用される

だから、あなたは、いくつかのオプションが残っているあなたが求める正確に何をし

非現実的なオプション:。。

だから、唯一の解決策は、になりますあなたのプロジェクトで警告を無効にしてから、あなた自身のすべてのユニットで警告を有効にしてくださいその指示。

最も簡単かつ現実的なオプション:

一度だけ、あなたのライブラリーのパスからソースを除去することによって、DCUをを使用して単位をコンパイルします。とにかく編集したくないのが最も簡単です。

あなたはまだライブラリパス異なっているあなたのブラウジングパスにそれらを追加することができます。その場合は、DCUが使用されますが、Delphiではソースを見つけることができるため、デバッグ中もそれらをナビゲートできます。

小さな利点は、ビルドごとに再コンパイルする必要がないため、プロジェクトのビルドも高速です。

ベストオプション:すべてで、これらのユニットを使用して

ストップ。非常に多くの警告を持つユニットは、ソフトウェアに劣り、深刻な問題を引き起こす可能性があります。

他のソリューション:

  • とにかく脇の単位を変更していないのあなたの願いを設定し、それらのユニットにコンパイラディレクティブを追加しますが、私は、Delphi 7を使用した警告
+3

+1で "あなたの願いを脇に..."としてください。サードパーティのソースを変更する際の最も重要な問題は、後でアップグレードする際に問題が発生する可能性があるということですが、ユニット内の実際のコードには影響しないため、1つの '{$ WARNINGS OFF}'は問題を生じません。 –

+0

ヒントをお寄せいただきありがとうございます。私はこの回答を、私に幅広い選択肢を与えた理由としてマークしています。 – Wodzu

+0

ちょうど明確にするために、あなたが言うとき**ソースパス**あなたが意味する**ブラウジングパス**? [Delphiのパス](http://stackoverflow.com/questions/812042/delphi-search-path-vs-library-path-vs-browsing-path) – outlier

2

いいえ、私はそのような指示があるとは思わない。

私はこれを達成することが分かってきた唯一の方法、

  • すべてをコンパイルされ、コンパイラはそれ
  • は確かDCUが発見されていることを確認見つけるのどこかに違反しているユニットのDCUを置きますそのdcuのソースより前に、またはソースがコンパイラによって見つけられないことを確認してください。

これにより、パスがコンパイルされないようにして、問題のユニット。

私は、デバッガを実行したくないときに、ライブラリ単位(ソースから常にコンパイルします)でよく取る方法です。私はリリース構成(debug = off)をコンパイルしてから、踏み込みたくないユニットのdcuを取り出し、対応するpasファイルの前にコンパイラが見つけていることを確認します。

警告:問題のユニットで作業する必要があるときは、DCUが取り外されるか、混乱する可能性があることを確認してください。

0

を解決し、ここに私がそれを行う方法は...

プロジェクト.dprまたはこれで動作しないユニットを含めないでください。彼はプロジェクトオプションの検索パス上のユニットのフォルダです。

は、その後、あなたがそれを使用するすべてのユニットには、これらのコンパイラディレクティブを使用します、ただの推測

uses 
    {$WARNINGS OFF}{$HINTS OFF} 
    TheUnitHere; 
    {$WARNINGS ON}{$HINTS ON} 
+0

はまだdelphi 7を使用していますか? – nurettin

関連する問題