Вопрос

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

{$WARN USE_BEFORE_DEF OFF}

Но когда я попытался сделать это с определенной подсказкой, имя которой underscore_style_name я получил из файла справки, компилятор сказал, что не знает, что такое {$ 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 / ON не работает внутри функции / процедуры.

Таким образом, вы в конечном итоге выключаете и включаете подсказки для всей функции:

{$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;

Вы получите: Подсказка: переменная " i " объявлен, но никогда не используется

Попробуйте вместо этого:

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top