Как я могу временно отключить «возвращаемое значение может быть неопределенным» предупреждением?

StackOverflow https://stackoverflow.com/questions/4204326

Вопрос

Я хочу отключить конкретное предупреждение (W1035) в моем коде, поскольку я думаю, что компилятор не прав в этом предупреждении:

function TfrmNagScreen.Run: TOption;
begin
  if ShowModal = mrOk then
    Result := TOption(rdgAction.EditValue)
  else
    Abort
end;

В результате результат не может быть неопределен, поскольку Abort бросать EAbort.

Я старался:

  • {$WARN 1035 Off}: Очевидно, это работает только для определенных конкретных ошибок (см. Документация)
  • {$W-1035}: Вообще ничего не делает

Я знаю, что могу отключить предупреждение во всем мире в параметрах проекта или использовать {$WARNINGS OFF}, но это не то, что предназначено здесь.

Редактировать: у меня qc'ed это сейчас как #89744.

Это было полезно?

Решение

Вы не можете отключить это предупреждение по всему миру, но вы можете использовать {$WARN NO_RETVAL OFF} Чтобы отключить локально предупреждение.

{$WARN NO_RETVAL OFF}
function TfrmNagScreen.Run: TOption;
begin
  if ShowModal = mrOk then
    Result := TOption(rdgAction.EditValue)
  else
    Abort
end;
{$WARN NO_RETVAL ON}

Другие советы

У меня нет компилятора Delphi в данный момент, но переставляя код для удаления if..else может сделать предупреждение уйти:

function TfrmNagScreen.Run: TOption;
begin
  if ShowModal <> mrOk then
    Abort;

  Result := TOption(rdgAction.EditValue);
end;

Смотрите также Как отключить предупреждение в Delphi о «возвращении значения ... может быть неопределенным»?.

Вы можете использовать аккуратный трюк, чтобы обмануть компилятор. Определите функцию библиотеки так:

procedure Abort(var X);
begin
  SysUtils.Abort;
end;

Затем вы можете написать свою функцию как:

if ShowModal = mrOk then
  Result := TOption(rdgAction.EditValue)
else
  Abort(Result)

Компилятор считает, что вы написали, чтобы привести, так как это параметр var, и он перестает блесть.

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