2013年8月16日金曜日

一部のヒントを非表示にする

example.pas(1054,24) Hint: Parameter "Target" not used

Lazarus IDEのメッセージウィンドウに、このようなヒントが表示される場合があります。

クラスのプライベートプロパティにメソッドポインタならぬ関数ポインタをもたせて、他のパラメータに応じて、関数を切り替えて使うような場合があるとします。

このような場合、引数を削ってしまうわけにはいかないので、何とかそこだけヒントを無効にしたいところです。

interface
type
  TProc = function (Target: TObject): integer;

implementation

function DefProc( Target: TObject): integer;
begin
   Result:= 0;
end;

function Proc01( Target: TObject): integer;
begin
   Result:= 0;
   if Target is TCompoment then Result:= 1;
end;

procedure Main;
var
  Proc: TProc;
begin
   Proc:= DefProc;

   if Mode=1 then Proc:=Proc01;

  Proc( object);
end;

こんな場合に、DefProc の Target が使われていないとヒントが出ます。

コンパイラオプションからヒントを無効にしてしまうと、他のヒントもごっそり表示されなくなってしまうので、それは避けねばなりません。

{%H-} を Target の頭につければ以後それに関してのヒントのみが表示されなくなります。

function DefProc( {%H-}Target: TObject): integer;

なお、Sender も同様に使われない場合が多々ありますが、Senderに限っては表示されません。
Sender が使われていない旨も表示させることもできますが、デフォルトではプロジェクトオプションで抑制されています。(画像内の右上の項目に注目)
昔は出ていたようです(?)





以上。

0 件のコメント:

コメントを投稿