「返品値が定義されていない」警告を一時的に無効にするにはどうすればよいですか?
-
25-09-2019 - |
質問
コンパイラがこの警告について間違っていると思うので、コードで特定の警告(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パラメーターであり、ブレートが停止しているため、結果を書いたと考えています。
所属していません StackOverflow