Einzelnen Beitrag anzeigen

Ralle1

Registriert seit: 2. Nov 2011
49 Beiträge
 
Delphi XE3 Professional
 
#1

Warnung bei nicht initialisieren String-Result

  Alt 20. Okt 2014, 17:53
Hallo zusammen!

Die folgende function erzeugt erwartungsgemäß eine Warnung:

Delphi-Quellcode:
function GetInteger(Value: boolean): integer;
begin
  if Value then
    Result := 1;
end;
W1035 Rückgabewert der Funktion 'GetInteger' könnte undefiniert sein

Mache ich das gleiche mit einem String als Result, wird keine Warnung generiert:

Delphi-Quellcode:
function GetString(Value: boolean): string;
begin
  if Value then
    Result := 'Value';
end;
Kann man es irgendwie konfigurieren so dass diese Warnung ausgelöst werden kann??

Man könnte nun argumentieren, dass ein String im Gegensatz zum Integer immer vorinitialisiert wird und die Warnung daher nicht nötig ist. Aber da Delphi intern scheinbar mit var-Parametern statt Result-Werten arbeitet, kann dies zu unerwartetem Verhalten führen, wenn man der Funktion eine Variable zuweist. Beispiel:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Test : string;
begin
  Memo1.Lines.Clear;

  Test := GetString(true);
  Memo1.Lines.Add(Test);

  Test := GetString(false);
  Memo1.Lines.Add(Test);
end;
Das Memo enthält nach dieser Funktion tatsächlich 2 Zeilen „Value“ da die Funktion die Variable Test
als Var-Parameter nutzt, also etwa als wenn man es so schreiben würde:

procedure GetString(Value: boolean; var Result: string);

Daher würde ich gerne davor gewarnt werden, wenn ein Result String undefiniert sein könnte ?!
  Mit Zitat antworten Zitat