Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#9

AW: Parameter der Pfadangabe enthält herrausfinden

  Alt 11. Okt 2013, 12:15
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;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (11. Okt 2013 um 12:25 Uhr)
  Mit Zitat antworten Zitat