Как отключить определенные предупреждения и подсказки Delphi?

Как в CodeGear Delphi 2007 отключить определенные предупреждения и подсказки? Я пытаюсь отключить H2077 - значение, присвоенное «varname», никогда не использовалось.


person Dustin Venegas    schedule 10.03.2009    source источник


Ответы (5)


Подсказки? Нет конкретного.

Вам придется отключить их все:

{$HINTS OFF}

Предупреждения?

{$WARN _name_of_warning_ OFF|ON|ERROR}

Здесь вы найдете полный список

person Lars Truijens    schedule 10.03.2009
comment
Я проверил оба из них и, похоже, не нашел подходящего для H2077. Есть ли у вас какие-нибудь идеи по поводу их определения? - person Dustin Venegas; 10.03.2009
comment
H обозначает подсказку, которую нельзя игнорировать. Однако вы можете отключить все подсказки для этой строки. - person Lars Truijens; 10.03.2009
comment
Спасибо за быстрый и лаконичный ответ! - person Dustin Venegas; 11.03.2009

Вы не можете отключить определенные подсказки, как вы можете отключить предупреждения. Подсказки - это те вещи, которые не окажут потенциально неблагоприятного воздействия на ваш исполняемый код. Например, когда вы видите подсказку «Значение, присвоенное 'varname' никогда не использовалось», это просто предложение чего-то, что вы, вероятно, должны «очистить» в своем коде, но это не вызовет никаких потенциальных ошибок времени выполнения (кроме ваших собственные логические ошибки, конечно :-). Подсказки всегда лучше всего устранять путем настройки кода.

С другой стороны, предупреждения - это те вещи, которые могут вызвать непредусмотренное поведение во время выполнения, и действительно их необходимо устранить. Например, использование переменной перед присвоением ей значения явно является случаем неинициализированной переменной и может привести к «плохим вещам». В подавляющем большинстве случаев предупреждения следует устранять путем «исправления» кода. Даже в этом случае при определенных обстоятельствах вы можете посчитать предупреждение «ложным срабатыванием» и уверены, что код работает правильно. В таких случаях вы можете отключить конкретное предупреждение. Отключение всех предупреждений опасно.

person Allen Bauer    schedule 10.03.2009
comment
Я обнаружил, что количество ложных срабатываний уменьшается по мере того, как я лучше учусь программировать. - person Jim McKeeth; 12.03.2009

Почему бы вам вместо этого не изменить код, чтобы подсказка исчезла? Эти подсказки обычно довольно точны. И если вы действительно чувствуете, что строка кода (я предполагаю, что инициализация какой-то переменной или что-то другое) полезна для читателя вашего кода, даже если она не имеет отношения к компилятору, вы можете заменить ее комментарием.

person Jim    schedule 10.03.2009
comment
Джим, это программа, которую я унаследовал, в которой их миллиард. Я пытаюсь отфильтровать его, чтобы его можно было прочитать, если есть какие-либо реальные ошибки. Проблема в том, что переменные инициализируются определенным значением, которое никогда не используется. Неважно, это всего лишь инициализация переменной. - person Dustin Venegas; 10.03.2009
comment
Дастин, это не просто инициализация переменной. Подобные подсказки могут указывать на проблемы в коде или путях выполнения, которые вы, возможно, не учли. Проверка кода и исправление займет всего пару секунд, и вам не нужно делать все сразу. - person Ken White; 11.03.2009

Что сказал Ларс. Также вы можете получить полный список предупреждений и их текущие настройки, дважды нажав CTRL-O. Он сбросит список вверху текущего блока. Вы можете просмотреть там, чтобы найти тот, который вам нужно изменить. Просто не забудьте удалить список позже, иначе люди, просмотревшие код позже, возненавидят вас. ;)

person Mason Wheeler    schedule 10.03.2009

Чтобы удалить подсказку для строки кода, которая имеет:

H2077 Значение, присвоенное '% s', никогда не использовалось

Вы можете обернуть его:

{$HINTS OFF}
//...
{$HINTS ON}

Например, от глючного Vcl.ComCtrls.pas:

procedure TTrackBarStyleHook.Paint(Canvas: TCanvas);
//....
begin
   if not StyleServices.Available then Exit;

   {$HINTS OFF}
   Thumb := ttbTrackBarDontCare; //value assigned to 'Thumb' never used
   {$HINTS ON}

   //...
end;

Примечание: любой код, выпущенный в общественное достояние. Ссылка на авторство не требуется.

person Ian Boyd    schedule 08.05.2015