「返品値が定義されていない」警告を一時的に無効にするにはどうすればよいですか?

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'にしました #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