Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ShellExecute und Leerzeichen? Geht nicht? (https://www.delphipraxis.net/29293-shellexecute-und-leerzeichen-geht-nicht.html)

Portabella 7. Sep 2004 11:17


ShellExecute und Leerzeichen? Geht nicht?
 
Hi,

kann ShellExecute mit Leerzeichen umgehen? Bei mir scheint das irgendwie nicht zu funktionieren (Delphi 7).
Wenn ich ShellExecute (s.u.) mit folgendem Parameter:
Code:
 
hlpSystemdienst := 'D:\OrdnerDiana\bin\mysqld-nt.exe -install';

ShellExecute(Application.Handle, 'open', PChar(SysUtils.GetEnvironmentVariable('COMSPEC')),
      PChar('/C '+hlpSystemdienst), nil, SW_ShowNormal);
aufrufe klappt alles wunderbar und der Dienst wird installiert.

Wenn ich allerdings den Ordner anders nenne:
Code:
 
hlpSystemdienst := 'D:\Ordner Diana\bin\mysqld-nt.exe -install';
d.h. nur 1 Leerzeichen zwischen Ordner und Diana steht, dann wird der Dienst nicht installiert.

Wenn ich alles selbst per Kommandozeile installiere klappt es bei beiden Versionen?!

Weiß jemand was ich da machen kann?

Danke schon mal im Voraus,

Diana

Jelly 7. Sep 2004 11:21

Re: ShellExecute und Leerzeichen? Geht nicht?
 
Probiers mal, den Pfad in "" zu setzen, also so:
Delphi-Quellcode:
hlpSystemdienst := '"D:\Ordner Diana\bin\mysqld-nt.exe" -install';
Gruß,

Portabella 7. Sep 2004 11:28

Re: ShellExecute und Leerzeichen? Geht nicht?
 
Suuuuuuuuper! Es klappt! :-D
Vielen Dank für den Tipp!!!

Viele Grüße,

Diana

himitsu 7. Sep 2004 11:41

Re: ShellExecute und Leerzeichen? Geht nicht?
 
Das ist eigentlich ganz klar, da ja normaler Weise die einzelnen Parameter durch Leerzeichen getrennt sind wird ihne die " die Pfad-/Datei-Angabe aufgeteilt.
Also in
Parameter 1 = D:\Ordner
Parameter 2 = Diana\bin\mysqld-nt.exe
Parameter 3 = -install


deshalb muß ja irgendwie, also mit ", gesagt werden, was zusammengehört und nicht gerennt werden soll



und da vermutlich kein Ordner "D:\Ordner" und keine Datei "Diana\bin\mysqld-nt.exe" existiert kann auch nichts geschehen
dieses kann aber auch zu massig Problemen führen, wenn eines davon doch existiert
z.B. der Pfad "C:\abc def\ghi.exe"
wenn jetzt aber eine "C:\abc.exe" vorhanden ist, so wird diese genommen -.-

Alfons_G 7. Sep 2004 15:07

Re: ShellExecute und Leerzeichen? Geht nicht?
 
Man kann auch zum Testen eine Verknüpfung im Explorer oder auf dem Desktop erstellen, welche die Befehlszeile enthält. Wenn es hier klappt, dann sollte es auch mit ShellExecute() gehen.

:coder:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 Uhr.

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