W1035 Rückgabewert der Funktion '%s' könnte undefiniert sein (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Fehler- und Warnungsmeldungen (Delphi)

Diese Warnung wird angezeigt, wenn dem Rückgabewert einer Funktion nicht in jedem Codepfad ein Wert zugewiesen wurde.

Die Funktion könnte auch ausgeführt werden, ohne dass der Rückgabewert zugewiesen wird.


program Produce;
(*$WARNINGS ON*)
var
  B : Boolean;
  C: (Red,Green,Blue);

function Simple: Integer;
begin
end;                         (*<-- Hier die Warnmeldung*)

function IfStatement: Integer;
begin
  if B then
    Result := 42;
end;                         (*<-- Hier die Warnmeldung*)

function CaseStatement: Integer;
begin
  case C of
  Red..Blue: Result := 42;
  end;
end;                         (*<-- Hier die Warnmeldung*)

function TryStatement: Integer;
begin
  try
    Result := 42;
  except
    Writeln('Should not get here!');
  end;
end;                         (*<-- Hier die Warnmeldung*)

begin
  B := False;
end.

Das Problem bei IfStatement und CaseStatement besteht darin, dass der Rückgabewert (Result) nicht in jedem Quelltextpfad zugewiesen wird. Der Compiler vermutet, dass in TryStatement eine Exception vor der Zuweisung von Result auftreten kann.


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('Should not get here!');
  end;
end;

begin
  B := False;
end.

Die Lösung besteht darin, sicherzustellen, dass der Rückgabewert in jedem möglichen Quelltextpfad zugewiesen wird.