W1035 La valeur de retour de la fonction '%s' peut être indéfinie (Delphi)

De RAD Studio
Aller à : navigation, rechercher

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.