Ja, das ist wohl war. Es gibt viele Wege zum Ziel. Es geht auch so:
Delphi-Quellcode:
procedure GetCommandLineArgs(Args: TStrings);
var
NumArgs: Integer;
TempArgs, p: PPWideChar;
i: Integer;
begin
TempArgs := CommandLineToArgvW(GetCommandLineW, NumArgs);
try
if TempArgs <> nil then
begin
p := TempArgs;
for i := 0 to NumArgs - 1 do
begin
Args.Add(p^);
Inc(p);
end;
end
else
RaiseLastOSError;
finally
LocalFree(THandle(TempArgs));
end;
end;
Gegenüber der Lösung in Antwort #6 sieht das hier zwar nicht so schön aus, dafür übersteht es aber eine Bereichsprüfung.