Можно ли отключить определенные подсказки Delphi? - PullRequest
15 голосов
/ 14 января 2009

В Delphi вы можете использовать директивы компилятора для отключения определенных предупреждений, таких как

{$WARN USE_BEFORE_DEF OFF}

Но когда я попытался сделать это с определенной подсказкой, чей underscore_style_name я получил из файла помощи, компилятор сказал, что не знает, что такое {$ HINT}. Так есть ли способ сделать это?

Ответы [ 4 ]

31 голосов
/ 14 января 2009

Нет конкретных подсказок, но вы можете отключить их все.

{$HINTS OFF}
procedure MyProc;
var
  i : integer;
begin
  DoSomething;
end;
{$HINTS ON}
8 голосов
/ 15 января 2009

Немного не по теме: вам следует позаботиться о подсказках и предупреждениях компилятора. Они не просто для удовольствия. Компилятор просто говорит: «Программа может работать иначе, чем вы думаете, потому что ваш исходный код не точен».

6 голосов
/ 10 августа 2011

Чтобы это было действительно безопасно, хотелось бы сделать что-то вроде этого:

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, что меня не волнует в этом случае, и я не хочу видеть подсказку, потому что это помешает мне (и моим коллегам) заботиться о важных подсказках.)

4 голосов
/ 14 января 2009

Лучшее, что я могу придумать, - это окружить объект подсказки условным определением и использовать то же условное определение вокруг кода, который может или не может понадобиться, как показано ниже:

Если у вас есть это:

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;

Теперь вы можете включать или выключать определение, и вы никогда не получите подсказку.

...