Comment désactiver un avertissement dans Delphi à propos de la & # 8220; valeur de retour & # 8230; pourrait être indéfini & # 8221 ;?

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

  •  09-06-2019
  •  | 
  •  

Question

J'ai une fonction qui me donne l'avertissement suivant:

  

[Avertissement DCC] nom_fichier.pas (6939): W1035 La valeur renvoyée par la fonction 'fonction' peut être indéfinie

Cependant, la fonction est propre, petite et a une valeur de retour connue et attendue. La première déclaration de la fonction est:

Result := '';

et il n'y a pas de variable ou paramètre local appelé Résultat non plus.

Existe-t-il une directive de type pragma avec laquelle je peux entourer cette méthode pour supprimer cet avertissement? C'est Delphi 2007.

Malheureusement, le système d'aide de cette installation Delphi ne fonctionne pas. Par conséquent, je ne peux pas afficher l'aide pour cet avertissement maintenant.

Quelqu'un sait-il ce que je peux faire?

Était-ce utile?

La solution

Êtes-vous sûr d'avoir tout fait pour résoudre cet avertissement? Peut-être pourriez-vous poster le code pour que nous puissions le regarder?

Vous pouvez désactiver l'avertissement localement de cette façon:

{$WARN NO_RETVAL OFF}
function func(...): string;
begin
  ...
end;
{$WARN NO_RETVAL ON}

Autres conseils

Je ne suis pas sûr de vouloir voir le code de cette unité ... après tout, l'erreur se produit à la ligne 6939 ... Peut-être qu'une table du compilateur interne a été dépassée?

Il semble y avoir une sorte de bogue dans Delphi. Lisez ce message, le dernier commentaire est lié à d'autres rapports de bugs qui pourraient être ceux que vous avez:

http://qc.codegear.com/wc/qcmain.aspx ? d = 8144

Le {$ WARN NO_RETVAL OFF} est ce que vous recherchez, mais en général, j'aime découvrir pourquoi des problèmes de ce type se produisent. Vous pourriez envisager de le formater différemment et de voir si cela peut vous aider.

Avez-vous des commandes de modification de flux comme Exit (Exit)? Est-ce que vous soulevez directement des exceptions, etc.? Votre déclaration de cas a-t-elle un autre à la fin qui définit une valeur sur Result?

Peut-être essayer de peaufiner ces éléments et voir si cela élimine également l’avertissement.

Pour obtenir une bonne réponse, vous devez poster le code. En général, le compilateur Delphi donnera cet avertissement s'il existe un chemin de code susceptible d'empêcher la définition du résultat. Parfois, ce chemin de code est moins qu'évident.

Il y a un tel bogue dans le compilateur Delphi puisque, au moins, Delphi4: si la somme des nombres de paramètres de la fonction (y compris les variables Self et Result) et locales varie de plus de 31, cela pose des problèmes. Par exemple, il peut écrire des avertissements W1035 (le résultat peut être indéfini). Il peut manquer des variables non utilisées. Essayez juste ce projet:

program TestCompilerProblems;

procedure Proc;
var
  a01, a02, a03, a04, a05, a06, a07, a08, a09, a10,
  a11, a12, a13, a14, a15, a16, a17, a18, a19, a20,
  a21, a22, a23, a24, a25, a26, a27, a28, a29, a30,
  a31, a32, a33, a34, a35, a36, a37, a38, a39, a40: Integer;
begin
end;

begin
  Proc;
end.

Cela causerait 31 indices, pas 40.

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