17

Delphi では、コンパイラ ディレクティブを使用して、次のような特定の警告を無効にすることができます。

{$WARN USE_BEFORE_DEF OFF}

しかし、helpfile から取得した underscore_style_name の特定のヒントを使用してそれを実行しようとすると、コンパイラは {$HINT} が何かわからないと言いました。これを行う方法はありますか?

4

4 に答える 4

31

特定のヒントはありませんが、すべて無効にすることができます。

{$HINTS OFF}
procedure MyProc;
var
  i : integer;
begin
  DoSomething;
end;
{$HINTS ON}
于 2009-01-14T20:42:52.243 に答える
8

少しオフトピック:コンパイラのヒントと警告に注意する必要があります。彼らはただの楽しみのためではありません。コンパイラは、「ソースコードが正確でないため、プログラムの動作が異なる可能性がある」と言っているだけです。

于 2009-01-14T22:03:53.143 に答える
6

本当に安全にプレイするには、次のようにします。

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 / ON は機能・手順内では動作しません。

したがって、関数全体に対して無条件にヒントをオンまたはオフにすることになります。

{$HINTS OFF}
function TopazGetText(const _s: string): string;
begin
  Result := dzDGetText(_s, TOPAZ_TRANSLATION_DOMAIN);
end;
{$HINTS ON}

(コンパイラは、dzDGetText をインライン化できないと教えてくれましたが、この場合は気にしません。ヒントを見たくありません。これは、私 (および私の同僚) が重要なヒントを気にするのを止めるからです。 .)

于 2011-08-10T07:44:16.340 に答える
4

私が考えることができる最善の方法は、以下に示すように、ヒントの主題を条件付き定義で囲み、必要な場合と不要な場合があるコードの周りで同じ条件付き定義を使用することです。

あなたがこれを持っている場合:

procedure MyProc;
var
  i : integer;
begin
  DoSomething;
  //SomethingWith_i_IsCommentedOut;
end;

ヒント: 変数 "i" は宣言されていますが、使用されていません

代わりにこれを試してください:

procedure MyProc;
  {$IFDEF USE_THE_I_PROCEDURE}
var
  i : integer;
  {$ENDIF}
begin
  DoSomething;
  {$IFDEF USE_THE_I_PROCEDURE}
  SomethingWith_i_IsCommentedOut;
  {$ENDIF}
end;

これで、定義をオンまたはオフにすることができ、ヒントが得られることはありません。

于 2009-01-14T20:07:36.573 に答える