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 ?!