Na wenn es dir nur darum geht, dann sollte das schon ausreichen:
Delphi-Quellcode:
Var i: Integer;
B: Boolean;
S, Dateiname, Parameter: String;
Delphi-Quellcode:
S := ...
i := 1;
B := False;
While (i <= Length(S)) and ((S[i] <> ' ') or B) do Begin
If S[i] = '"' Then B := not B;
Inc(i);
End;
Dateiname := StringReplace(Trim(Copy(S, 1, i - 1)), '"', '', [rfReplaceAll]);
Parameter := Trim(Copy(S, i + 1, Length(S)));
Im Grunde ist das Leerzeichen das trennzeichen zwischen Dateiname und einzelnen Parametern.
Wobei innerhalb der "" das Leerzeichen mit zum Dateiname/Parameter gehört.
Hab das hier nur mal für den ersten Parameter (also den Dateinamen) verwirklicht ... die Parameter sind also immernoch in einem Gesamtstring enthalten.
So ähnlich wird es auch gemacht, wenn Delphi den übergebenen Parametersting für ParamStr aufteilt.