2009-05-31 10 views
5

私はあるフレームワークライブラリから別のフレームワークライブラリにいくつかのコードを移植しています。そのため、コードをコンパイルするために大きな部分をコメントアウトしてから慎重に復元する必要があります。その間、すべてのコメントアウトされたコードのために、私はたくさんの警告を受け取ります。私は私に警告のトンを与えているすべてのユニットでこれを含まれていますが、私は、コンパイル時に次のように今、コンパイラのメッセージを返すインクルードファイルから現在のユニットの名前を取得する方法はありますか?

{$MESSAGE WARN 'Warnings suppressed for unported unit with commented-out code'} 
{$WARN NO_RETVAL OFF} 
{$WARN USE_BEFORE_DEF OFF} 

だから私はそれらを抑制するためのファイルが含ま迅速に書くことにしました

[DCC警告] unfinished.inc(1):コメントアウトされたコード

でUnportedのユニットのために抑制W1054の警告私は、それは警告を含むをやってユニットから来ていることを私に教えていないたいインクルードファイルそのもの。実際にインクルードファイルから$ MESSAGEディレクティブを移動させずに、これを行う方法や、ユニットの名前をメッセージに組み込む方法はありますか?

答えて

14

ここでは、privateメソッドを持つクラスがインクルードファイルで宣言されていても、「未使用のプライベートメソッド」のコンパイラヒントにユニットの名前が含まれ、クラスが宣言されているという事実を利用するトリックです。

これは、インクルードファイルのインクルードディレクティブが、宣言が許可されているの部分に表示されるようにするために、インターフェイスセクションのuses句の後または実装セクションのuses句の後に指定する必要があります。

あなたは、ファイルは次のようになります含める
interface 

uses Foo, Bar, Socks; 

{$include Unfinished.inc} 

[DCC警告]:

{$MESSAGE WARN 'Warnings suppressed for unported unit with commented-out code, Unit name see next line'} 
type 
    TUnit_With_Suppressed_Warnings = class 
    private 
    procedure UnitWithSuppressedWarnings; virtual; abstract; 
    end; 

{$WARN NO_RETVAL OFF} 
{$WARN USE_BEFORE_DEF OFF} 

さて、あなたはファイルが含まれていることを含んでいるすべてのユニットのために、以下の2つのメッセージを取得しますunfinished.inc(1):W1054コメントアウトされたコードを持つ未実装のユニットの警告が抑制されました。ユニット名は次の行を参照してください。
[DCC Hint] actualunitname.pas(5):専用シンボルUnitWithSuppressedWar国は宣言されたが使用されなかった。

実際のユニットの名前が2行目に表示されていることに注意してください。

備考:コンパイラのヒントがオフの場合、2行目は表示されません。

+0

私はそれが好きです!それはちょっとしたハックですが、私はできないと思ったことをする方法を見つけることができます。 –

+1

天才、私の答えを削除しました:) –

+0

本当に非常に創造的! –

関連する問題