Delphi-Quellcode:
function GetParamPath(): String;
begin
...
if ... then
begin
Result := ...;
break;
end;
...
end;
Auch wenn der Compiler hier nicht meckert, da solche compilerverwalteten Typen (String, Interface, Variant oder dynamisches Array) praktisch automatisch initialisiert werden.
Gebe ich dir den Rat das Result dennoch zu initialisieren
Hier bekommst du ja deine "Warnung" im die Ohren geworfen.
Delphi-Quellcode:
function Test: Integer;
begin
if ... then
begin
Result := 123;
break;
end;
end;
denn das Result wird nicht so initialisiert, wie man es sich vielleicht denkt. (lokale Strings sind automatisch immer leer
''
, welches beim Result zufällig fast immer so ist, es aber nicht so sein muß, da dieses Result außerhalb der Funktion initialisiert wird)
Und außerdem knallt es bei dir, wenn deine Schleife auf einen "leeren" Parameter trifft.
DeinProgramm.exe 123 "" 456
´
Param 1 = "123"
Param 2 = "" (also
''
als Delphi-Stringkonstante)
...
Und dann geht diese Schleife von 1 bis ParamCount
ParamStr(0) ist kein Parameter, sondern entspricht dem Anwendungsnamen, bzw. Application.ExeName .
Delphi-Quellcode:
function GetParamPath: String;
var
i: Integer;
begin
Result := ''; // kann auch ans Ende der Funktion, da wenn man Exit statt Break verwendet
for i := 1 to ParamCount do
begin
if (ParamStr(i) <> '') and not CharInSet(ParamStr(i)[1], ['-', '/']) then // if not StartsStr('-' ParamStr(i)) and not StartsStr('/' ParamStr(i)) then
begin
Result := ParamStr(i);
Break;
end;
end;
end;