Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ShellExecute: Probleme bei der Übergabe von zusätzlichen Programmparametern (https://www.delphipraxis.net/160957-shellexecute-probleme-bei-der-uebergabe-von-zusaetzlichen-programmparametern.html)

DeddyH 10. Jun 2011 08:14

AW: ShellExecute: Probleme bei der Übergabe von zusätzlichen Programmparametern
 
ShellExecute ruft das mit der angegebenen Datei und dem angegebenen Befehl verknüpfte Programm auf, sofern vorhanden.

FriendOfDelphi 10. Jun 2011 08:27

AW: ShellExecute: Probleme bei der Übergabe von zusätzlichen Programmparametern
 
Zitat:

Zitat von Aphton (Beitrag 1105559)
Oder er ruft cmd mit eben genau diesen Parametern auf:
ShellExecute(0, 'open', 'cmd /C ', 'mysql.exe -h hostname -u username -ppasswort -e "SELECT * FROM datenbank.tabelle" > ausgabe.txt', NIL, SW_SHOWNORMAL)

Habe ich ausprobiert. Funktioniert so nicht. Der Fehlercode, den
Delphi-Quellcode:
ShellExecute
damit zurück gibt, lautet 2 (SE_ERR_FNF = 2, 'Datei wurde nicht gefunden Quelle:http://www.tksoft-online.de/index.ph...e-methode.html).

Ich verstehe das auch noch nicht so ganz. mysql.exewird doch schon mit
Delphi-Quellcode:
ShellExecute
in der Kommando-Shall (cmd.exe) aufgerufen.

DeddyH 10. Jun 2011 08:29

AW: ShellExecute: Probleme bei der Übergabe von zusätzlichen Programmparametern
 
Wie ist es denn so (da war wohl ein Parameter verrutscht)?
Delphi-Quellcode:
ShellExecute(0, 'open', 'cmd.exe', '/C mysql.exe -h hostname -u username -ppasswort -e "SELECT * FROM datenbank.tabelle" > ausgabe.txt', NIL, SW_SHOWNORMAL)

Luckie 10. Jun 2011 09:18

AW: ShellExecute: Probleme bei der Übergabe von zusätzlichen Programmparametern
 
Wenn du die Ausgabe sehen willst, musst du die Konsole von Hand über Start/Ausführen öffnen und dort den kompletten Befehle eintippen.

Wenn Shellexecute die Datei nicht findet und du keinen Pfad zur Datei angegeben hast, liegt sie wahrscheinlich nicht im Suchpfad. Gib einen Pfad zur Datei an. Genauso solltest du einen Pfad zur Ausgabedatei angeben, sonst landet die Datei irgendwo. Denn wenn ich eine Konsole über Start/Ausführen öffne, ist das aktuelle Verzeichnis mein Benutzerverzeichnis.

FriendOfDelphi 10. Jun 2011 09:29

AW: ShellExecute: Probleme bei der Übergabe von zusätzlichen Programmparametern
 
Zitat:

Zitat von DeddyH (Beitrag 1105601)
Wie ist es denn so (da war wohl ein Parameter verrutscht)?
Delphi-Quellcode:
ShellExecute(0, 'open', 'cmd.exe', '/C mysql.exe -h hostname -u username -ppasswort -e "SELECT * FROM datenbank.tabelle" > ausgabe.txt', NIL, SW_SHOWNORMAL)

Das ist die Lösung und funktioniert prima.:-D Vielen Dank.

Vielleicht kann ja ein Wissender nochmal abschließend und etwas ausführlicher mit etwas Hintergrundwissen zu
Delphi-Quellcode:
ShellExecute
erklären, warum das genau so gemacht werden muss...

DeddyH 10. Jun 2011 10:12

AW: ShellExecute: Probleme bei der Übergabe von zusätzlichen Programmparametern
 
Das Problem ist, dass die Dateiumleitung eine "Spezialität" von %comspec% (also meist cmd.exe) ist. Deshalb musst Du auch diese starten. Was bei ShellExecute geschieht ist ja Folgendes (ich hoffe, ich gebe das jetzt korrekt wieder):
Zunächst wird die Dateiendung der übergebenen Datei daraufhin untersucht, ob sie registriert ist (Eintrag unter z.B. HKCL\.bla zeigt auf blafile). Nun wird zum geraden ermittelten Schlüssel gesprungen und dieser untersucht (bei einem 'open'-Befehl HKCL\blafile\Shell\open\command) und das dort angegebene Programm ("C:\Programme\Wuppdi\bla.exe" "%1") mit dem übergebenen Dateinamen als Parameter gestartet. Daher kann es auch sein, dass je nach Befehl (open, print etc.) unterschiedliche Programme aufgerufen werden, da in den entsprechenden Schlüsseln eben unterschiedliche Programme eingetragen sind.

jaenicke 10. Jun 2011 10:29

AW: ShellExecute: Probleme bei der Übergabe von zusätzlichen Programmparametern
 
Trotzdem ist das Quatsch. Denn die Textdatei liest du dann wahrscheinlich wieder in dein Programm ein, oder?

Statt dafür die cmd.exe zu nehmen kannst du die Ausgabe auch direkt auslesen wie bereits inkl. fertigem Code verlinkt. Dann funktioniert der Code auch ohne Schreibrechte auf eine Ausgabedatei...

DeddyH 10. Jun 2011 10:32

AW: ShellExecute: Probleme bei der Übergabe von zusätzlichen Programmparametern
 
Kann es nicht sein, dass er gute Gründe dafür hat, die Ausgabe in eine Datei umzuleiten? Ich finde es reichlich vermessen, das pauschal als "Quatsch" abzutun, ohne die genaue Intention dahinter zu kennen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:30 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