Question

Je veux désactiver un avertissement spécifique (W1035) dans mon code, car je pense que le compilateur se trompe sur cet avertissement:

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

Il n'y a aucun moyen le résultat pourrait être indéfini, puisque Abort jette EAbort.

J'ai essayé:

  • {$WARN 1035 Off}: Apparemment, cela ne fonctionne que pour quelques erreurs spécifiques (voir Documentation )
  • {$W-1035}: Ne fait rien du tout

Je sais que je peux désactiver l'avertissement à l'échelle mondiale dans les options de projet, ou à l'aide {$WARNINGS OFF}, mais ce n'est pas ce qui est prévu ici.

Modifier. Je QC'ed ce maintenant # 89744

Était-ce utile?

La solution

vous ne pouvez pas désactiver cet avertissement au niveau mondial, mais vous pouvez utiliser le {$WARN NO_RETVAL OFF} pour désactiver l'avertissement localement.

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

Autres conseils

Je n'ai pas un compilateur Delphi disponible pour le moment, mais réarranger le code pour enlever le if..else peut-être faire l'avertissement disparaître:

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

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

Voir aussi Comment désactiver un avertissement dans Delphi de « valeur de retour ... peut-être non défini »? .

Vous pouvez utiliser une astuce pour tromper le compilateur. Définir une fonction de bibliothèque comme ceci:

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

Vous pouvez alors écrire votre fonction:

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

Le compilateur pense que vous avez écrit à Résultat car il est un paramètre var et il cesse de bêler.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top