AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi ShellExecute: Probleme bei der Übergabe von zusätzlichen Programmparametern
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von FriendOfDelphi · begonnen am 9. Jun 2011 · letzter Beitrag vom 10. Jun 2011
Antwort Antwort
Seite 1 von 2  1 2      
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#1

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

  Alt 9. Jun 2011, 16:33
Delphi-Version: 5
Hallo Allerseits,

ich habe Probleme bei der Übergabe von Parametern, die man dem aufzurufenden Programm mit gibt.
Der eigentliche Aufruf des Programms über ShellExecute ist klar:
ShellExecute(Handle, 'open', PChar(DateiName), PChar(Parameter), PChar(VerzeichnisPfad), SW_SHOWNORMAL); Probleme machen hier die Parameter.
Die da lauten '-h hostname -u username -ppasswort -e "SELECT * FROM datenbank.tabelle" > ausgabe.txt'.
Ziel ist es aus Delphi heraus ein MySQL-Kommando auf der Kommandozeile auszuführen.
Wenn ich das Kommando mit mysql.exe -h hostname -u username -ppasswort -e "SELECT * FROM datenbank.tabelle" > ausgabe.txt direkt aus der cmd-Shell heraus aufrufe, funktiniert alles prima.

Wenn ich die Umleitung in die Datei weglasse (also > ausgabe.txt), funktioniert dies auch aus Delphi heraus.
Das Problem muss also im hinteren Teil des Parameterstrings liegen.
Wahrscheinlich kommt ShellExecute nicht mit den Leerzeichen, oder dem "größer als-Zeichen" nach den hinteren doppelten Anführungsstrichen (") klar.

Kann jemand helfen?
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#2

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

  Alt 9. Jun 2011, 16:52
Wenn mich nicht alles täuscht, dann liegt das Problem an der Umleitung in eine Datei. Das geht hier nicht so einfach. Du musst die Ausgabe selbst abfangen (mal danach googlen) und auch selbst in eine Datei schreiben.
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#3

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

  Alt 9. Jun 2011, 16:55
Ein Test mit dem Kommando
Code:
cmd /c echo "Hallo Welt" > C:\temp\Bla.txt
(cmd.exe als Programmname, der Rest als Parameter) hat bei mir funktioniert. Evtl. wird die Datei erzeugt, aber nicht im erwarteten Verzeichnis?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#4

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

  Alt 9. Jun 2011, 18:14
Dass die cmd.exe pipen kann, ist klar, nur halt nicht das andere Programm. Klar kann man das wiederum über die cmd.exe aufrufen, damit pipen geht statt die Ausgabe selbst einzufangen, aber das wäre irgendwie... unnötig...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#5

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

  Alt 9. Jun 2011, 19:26
Ein Test mit dem Kommando
Code:
cmd /c echo "Hallo Welt" > C:\temp\Bla.txt
(cmd.exe als Programmname, der Rest als Parameter) hat bei mir funktioniert. Evtl. wird die Datei erzeugt, aber nicht im erwarteten Verzeichnis?
Das habe ich auch erst gedacht. Aber ein Suchlauf auf den in Frage kommenden Laufwerken brachte kein Ergebnis.

Beim Ausführen "blitzt" ganz kurz ein cmd-Fenster auf. Wenn man das mehrere Male hintereinander macht, kann man sehen, dass die Datei zwar ausgeführt wird, aber eine Fehlermeldung ausgegeben wird. Diese kann ich leider nicht lesen, da das Ganze zu schnell geht und ich keinen Aufrufparameter für ShellExecute gefunden habe, der das Fenster offen läßt.
Wie gesagt, ich denke, dass die Parameter von ShellExecute nicht richtig an das Programm weitergereicht werden.
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#6

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

  Alt 9. Jun 2011, 19:28
Dass die cmd.exe pipen kann, ist klar, nur halt nicht das andere Programm. Klar kann man das wiederum über die cmd.exe aufrufen, damit pipen geht statt die Ausgabe selbst einzufangen, aber das wäre irgendwie... unnötig...
Deine Antwort verstehe ich nicht so ganz.
"mysql.exe" kann definitiv pipen.
Direkt aus einem cmd-Fenster aufgerufen funktiniert ja alles.
Wie meinst Du das?
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#7

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

  Alt 9. Jun 2011, 19:30
Wenn mich nicht alles täuscht, dann liegt das Problem an der Umleitung in eine Datei. Das geht hier nicht so einfach. Du musst die Ausgabe selbst abfangen (mal danach googlen) und auch selbst in eine Datei schreiben.
Kannst Du das bitte mal etwas näher erläutern.
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#8

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

  Alt 9. Jun 2011, 20:47
"mysql.exe" kann definitiv pipen.
Irrtum.

Direkt aus einem cmd-Fenster aufgerufen funktiniert ja alles.
Du sagst es, du bist innerhalb der cmd.exe, und die kennt das Pipe-Zeichen, ja.

Du musst das Pipen, also das Auslesen der Ausgabe aus den Ausgabepipes, selbst übernehmen:
http://www.delphi-treff.de/tipps/sys...ramm-anzeigen/
usw.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#9

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

  Alt 9. Jun 2011, 20:55
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)
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#10

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

  Alt 10. Jun 2011, 09:03
"mysql.exe" kann definitiv pipen.
Irrtum.

Direkt aus einem cmd-Fenster aufgerufen funktiniert ja alles.
Du sagst es, du bist innerhalb der cmd.exe, und die kennt das Pipe-Zeichen, ja.

Du musst das Pipen, also das Auslesen der Ausgabe aus den Ausgabepipes, selbst übernehmen:
http://www.delphi-treff.de/tipps/sys...ramm-anzeigen/
usw.
Ok, stimmt. Nicht mysql.exe, sondern cmd.exe verarbeitet das Pipe-Zeichen.
Aber so ganz verstehe ich das noch nicht.
Ich dachte, die Funktion ShellExecute ruft genau cmd.exe auf und ich befinde mich dann innerhalb dieser Shell?
Und darin wird dann das Programm mysql.exe gestartet mit den Parametern, die ich zusätzlich übergeben habe.
Wo ist da mein Denkfehler?
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:00 Uhr.
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