インクルードファイルから現在のユニットの名前を取得する方法はありますか?

StackOverflow https://stackoverflow.com/questions/932638

質問

私はちょうどそれをコンパイルするために取得するためのコードの大規模なセクションをコメントアウトするために私を必要とする、別のフレームワークライブラリからいくつかのコードを移植して、慎重にそれらを復元しています。一方で、私はので、すべてコメントアウトコードの警告のトンを取得します。だから私は書く迅速にそれらを抑制するために、ファイルを含めることを決定します:

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

私は私の警告のトンを与えているすべてのユニットでこれを含め、今、私はコンパイルするときに、メッセージを返すコンパイラのは、次のように:

[DCC警告] unfinished.inc(1):コメントアウトされたコードと非移植ユニットに対して抑制W1054警告

私はそれは警告がインクルードファイル自体を含まない、などのをやってユニットから来ていることを教えしたいと思います。それをするか、実際にインクルードファイルの外に、私はこれをしなかったすべての単一のユニットに$メッセージディレクティブを移動することなく、メッセージにユニットの名前を仕事にする方法はありますか?

役に立ちましたか?

解決

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

これは、あなたがファイルを含めるためのインクルードディレクティブが宣言はを許可されているユニットの一部に表示されていることが必要ですので、いずれかのインターフェイスセクションまたはのuses節後のuses節の後実装セクションます。

interface

uses Foo, Bar, Socks;

{$include Unfinished.inc}

あなたのインクルードファイルは次のようになります:

{$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つのメッセージを取得します

  

[DCC警告] unfinished.inc(1):コメントアウトされたコードと非移植ユニットに対して抑制W1054警告、ユニット名は、次の行
参照   [DCCのヒント] actualunitname.pasは(5):プライベートシンボルUnitWithSuppressedWarningsが宣言さが、使用されませんでした。

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

備考:コンパイラのヒントがオフになっている場合は、二行目は表示されません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top