Einzelnen Beitrag anzeigen

samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#6

AW: Rückgabe von CommandLineToArgvW

  Alt 17. Sep 2010, 12:21
Ich habe nochmal darüber nachgedacht und mir ist aufgefallen, das der Code, so wie er von mir vorgeschlagen wurde, gleich zwei Memoryleaks produziert. Hier nun eine korregierte Fassung. (Ich gehe davon aus, das die Windows-Funktionen keine Exception erzeugen werden).
Delphi-Quellcode:
procedure GetCommandLineArgs(Args: TStrings);
type
  TPWideCharArray = array[0..0] of PWideChar;
var
  NumArgs: Integer;
  TempArgs: PPWideChar;
  i: Integer;
begin
  TempArgs := CommandLineToArgvW(GetCommandLineW, NumArgs);
  try
    if TempArgs <> nil then
    begin
      for i := 0 to NumArgs - 1 do
        Args.Add(TPWideCharArray(TempArgs^)[i]);
    end
    else
      RaiseLastOSError;
  finally
    GlobalFree(THandle(TempArgs));
  end;
end;
  Mit Zitat antworten Zitat