Как временно отключить предупреждение "Возвращаемое значение может быть неопределенным"?
Я хочу отключить определенное предупреждение (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 это сейчас как # 89744.
3 ответа
Вы не можете отключить это предупреждение глобально, но вы можете использовать {$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)
Компилятор считает, что вы написали в Result, поскольку это параметр var, и он перестает блеять.