Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Pfad richtig Escapen (https://www.delphipraxis.net/169923-pfad-richtig-escapen.html)

himitsu 21. Aug 2012 15:44

AW: Pfad richtig Escapen
 
Du sagst damit ja, daß dieses " ein "Zeichen" sein soll, so wie ein "A", aber das soll es ja nicht sein. :angle:

Dalai 21. Aug 2012 17:33

AW: Pfad richtig Escapen
 
Anführungszeichen werden in Batch gar nicht escaped sondern verdoppelt (oder vervierfacht). Escapen muss man nur Pipe (|), Umleitungen (< und >) sowie Befehlsgruppierungen (& und &&) und ggf. Klammern (welche ebenfalls der Befehlsgruppierung dienen).

Davon abgesehen frage ich mich aber noch, warum du die EXE nicht direkt ausführst. Das geht doch einfacher als der Umweg über CMD, oder nicht?

Ergänzung: Zur Expandierung von Umgebungsvariablen nutze ich diese Funktion:
Delphi-Quellcode:
function ExpandEnvStr(const sInput: string): string;
const
  MAXSIZE = 32768; // laut PSDK sind 32k das Maximum
begin
  SetLength(Result, MAXSIZE);
  SetLength(Result,
            ExpandEnvironmentStrings(PChar(sInput), @Result[1], Length(Result))-1);
            //-1 um abschließendes #0 zu verwerfen
end;
Die wird aber wahrscheinlich nicht mit WideStrings/Unicode funktionieren, schätze ich (ich weiß es nicht, weil ich bisher keine Notwendigkeit hatte, meine Programme darauf anzupassen und/oder zu testen).

MfG Dalai

Luckie 21. Aug 2012 17:36

AW: Pfad richtig Escapen
 
Wer rechnet denn schon damit, dass man mit Shellexecute den Kommandoprozessor aufruft, um ein Programm auszuführen. Das ist ja von hinten durch die Brust ins Auge.

pustekuchen 22. Aug 2012 06:37

AW: Pfad richtig Escapen
 
Zitat:

Zitat von Luckie (Beitrag 1179116)
Wer rechnet denn schon damit, dass man mit Shellexecute den Kommandoprozessor aufruft, um ein Programm auszuführen. Das ist ja von hinten durch die Brust ins Auge.

Da hast du natürlich recht.War gestern anscheinend zu spät :P

Und dieser Thread hat mich dann durcheinander gebracht.

Zitat:

Zitat von DeddyH (Beitrag 1179071)
Da steht aber nichts davon, dass man Anführungszeichen escapen soll. Lass die ^ doch mal testhalber weg.

Ohne gings ;)
Mit diesem Pfad
Delphi-Quellcode:
parameter := PWideChar('/K "C:\Program Files (x86)\PostgreSQL\9.1\bin\createuser" -s -U postgres test');


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:10 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz