W1035 La valeur de retour de la fonction '%s' peut être indéfinie (Delphi)
Remonter à Messages d'erreur et d'avertissement (Delphi)
Cet avertissement est émis si la valeur renvoyée d'une fonction n'a pas reçu de valeur sur chaque chemin de code.
En d'autres termes, la fonction risque de s'exécuter sans attribuer une valeur à la valeur de retour.
program Produce; (*$WARNINGS ON*) var B: Boolean; C: (Red,Green,Blue); function Simple: Integer; begin end; (*<-- Avertissement ici*) function IfStatement: Integer; begin if B then Result := 42; end; (*<-- Avertissement ici*) function CaseStatement: Integer; begin case C of Red..Blue: Result := 42; end; end; (*<-- Avertissement ici*) function TryStatement: Integer; begin try Result := 42; except Writeln('Ne devrait pas l'obtenir ici!'); end; end; (*<-- Avertissement ici*) begin B := False; end.
Le problème avec les procédures IfStatement et CaseStatement est que le résultat n'est pas affecté dans chaque chemin de code. Dans TryStatement, le compilateur suppose qu'une exception pourrait être provoquée avant que Result soit affectée.
program Solve; (*$WARNINGS ON*) var B: Boolean; C: (Red,Green,Blue); function Simple: Integer; begin Result := 42; end; function IfStatement: Integer; begin if B then Result := 42 else Result := 0; end; function CaseStatement: Integer; begin case C of Red..Blue: Result := 42; else Result := 0; end; end; function TryStatement: Integer; begin Result := 0; try Result := 42; except Writeln('Ne devrait pas l'obtenir ici!'); end; end; begin B := False; end.
La solution consiste à s'assurer qu'il y a une affectation de la variable result dans chaque chemin de code possible.