特定のDelphiヒントを無効にできますか?
-
22-07-2019 - |
質問
Delphiでは、コンパイラディレクティブを使用して、次のような特定の警告を無効にできます
{$WARN USE_BEFORE_DEF OFF}
しかし、アンダースコア_スタイル名をヘルプファイルから取り出した特定のヒントでそれを行おうとすると、コンパイラは{$ HINT}が何であるかを知らないと言った。これを行う方法はありますか?
解決
具体的なヒントはありませんが、すべて無効にすることができます。
{$HINTS OFF}
procedure MyProc;
var
i : integer;
begin
DoSomething;
end;
{$HINTS ON}
他のヒント
ちょっとした話題:コンパイラのヒントと警告に注意する必要があります。彼らはただの楽しみのためではありません。コンパイラは、「プログラムは異なる動作をする可能性がある」と言っています。これは、ソースコードが正確ではないためです。
本当に安全にプレイするには、次のようなことをしたいと思います:
function TopazGetText(const _s: string): string;
begin
{$IFOPT <something>+}
{$DEFINE HINTS_WERE_ON}
{$HINTS OFF}
{$ELSE}
{$UNDEF HINTS_WERE_ON}
{$ENDIF}
Result := dzDGetText(_s, TOPAZ_TRANSLATION_DOMAIN);
{$IFDEF HINTS_WERE_ON}
{$HINTS ON}
{$ENDIF}
end;
残念ながら、ヒントがオフかどうかを確認するためのコンパイラディレクティブがないため、これを行うことはできません。 (H +はヒント用ではなく、長い文字列用です)。 また、ヒント/オフは関数/手順内では機能しません。
つまり、関数全体に対して無条件にヒントをオンまたはオフにします:
{$HINTS OFF}
function TopazGetText(const _s: string): string;
begin
Result := dzDGetText(_s, TOPAZ_TRANSLATION_DOMAIN);
end;
{$HINTS ON}
(コンパイラは、この場合気にしないdzDGetTextをインライン化できなかったと私に言っていました。重要なヒントについて。)
考えられる最善の方法は、ヒントの主題を条件付き定義で囲み、以下に示すように、必要な場合とそうでない場合があるコードの周りで同じ条件付き定義を使用することです。
これがある場合:
procedure MyProc;
var
i : integer;
begin
DoSomething;
//SomethingWith_i_IsCommentedOut;
end;
次のものが得られます: ヒント:変数&quot; i&quot;宣言されているが使用されていない
代わりにこれを試してください:
procedure MyProc;
{$IFDEF USE_THE_I_PROCEDURE}
var
i : integer;
{$ENDIF}
begin
DoSomething;
{$IFDEF USE_THE_I_PROCEDURE}
SomethingWith_i_IsCommentedOut;
{$ENDIF}
end;
定義をオンまたはオフにできるようになりました。ヒントは表示されません。
所属していません StackOverflow