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

Aus RAD Studio

Nach oben zu Fehler- und Warnungsmeldungen (Delphi)


Bezeichner

Der Bezeichner für die Direktive $WARN: IMPLICIT_IMPORT

Beschreibung

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

Das heißt, die Funktion könnte auch ausgeführt werden, ohne dass sie dem Rückgabewert jemals einen Wert zuweist.

 
 program Produce;
 (*$WARNINGS ON*)
 var
   B: Boolean;
   C: (Red,Green,Blue);
 
 function Simple: Integer;
 begin
 end;                         (*<-- Warning here*)
 
 function IfStatement: Integer;
 begin
   if B then
     Result := 42;
 end;                           (*<-- Warning here*)
 
 function CaseStatement: Integer;
 begin
   case C of
   Red..Blue: Result := 42;
   end;
 end;                           (*<-- Warning here*)
 
 function TryStatement: Integer;
 begin
   try
     Result := 42;
   except
     Writeln('Should not get here!');
   end;
 end;                           (*<-- Warning here*)
 
 begin
   B := False;
 end.

Das Problem bei den Prozeduren „IfStatement“ und „CaseStatement“ besteht darin, dass der Rückgabewert („Result“) nicht in jedem Quelltextpfad zugewiesen wird. Der Compiler geht davon aus, dass in „TryStatement“ eine Exception vor der Zuweisung von „Result“ auftreten könnte.

 
 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.

Achtung: Verwenden Sie die Direktive noreturn, um die W1035-Warnungen zu beseitigen, wenn Exceptions ausgelöst werden.

Siehe auch