Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Rückgabe von CommandLineToArgvW

  Alt 17. Sep 2010, 00:52
Folgender Code:
Delphi-Quellcode:
//type
  //TPWideCharArray = array[0..0] of PWideChar;
  //PPWideCharArray = ^TPWideCharArray;

  //function CommandLineToArgvW( lpCmdLine: PWideChar; var NumArgs: Integer): PPWideChar;
    //stdcall; external 'shell32.dll';

procedure GetCommandLineArgs(Args: TStrings);
var
  NumArgs: Integer;
  //TempArgs: PPWideCharArray;
  TempArgs: PPWideChar;
  i: Integer;
begin
  if CommandLineToArgvW(GetCommandLineW, NumArgs) <> nil then
  begin
    try
      try
        TempArgs := CommandLineToArgvW(GetCommandLineW, NumArgs);
        for i := 0 to NumArgs - 1 do
          Args.Add(TempArgs^[i]);
      except
        raise Exception.Create(SysErrorMessage(GetLastError));
      end;
    finally
      GlobalFree(THandle(TempArgs));
    end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  GetCommandLineArgs(ListBox1.Items);
end;
Wenn ich PPWideChar und die Funktion nicht selber deklariere, siehe auskommentierten Code, bekomme ich nicht die Argumente, sondern nur die ersten drei Zeichen des Pfades.

Was muss ich ändern, damit ich die Datentypen und die Funktion nicht selber deklarieren muss, damit es funktioniert?

Entwicklungsumgebung ist Delphi 7, also nix Unicode.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat