Seite 1 von 1

QProcess - Probleme mit Argumenten

Verfasst: 26. August 2009 16:09
von KartoffelKiffer
Hallo,

ich versuche verzweifelt folgenden Prozess zu starten
C:/mysql/bin/mysql.exe --user=use --password=pwd --host=192.168.3.93 database --execute="SELECT * FROM table" > "c:\local_mysql_dump\table.sql"
Der exakt so, wie er dort steht, ausgeführt werden soll. Nach Durchführung der Maskierung erhalte ich folgende Zeichenkette, die ich einfach per QProcess::startDetached(program) ausführen möchte
C:/mysql/bin/mysql.exe --user=usr --password=pwd --host=192.168.3.93 database --execute=\"SELECT * FROM table\" > \"c:\\local_mysql_dump\\table.sql\"
Leider funktioniert dies so nicht. Es öffnet die Batch, jene welche die Argumentenliste des Prozesses mysql öffnet. Entsprechend gefällt ihm in der Argumentenübergabe etwas nicht.

Die Klasse QProcess scheint nun etwas in meiner Zeichenkette so zu verändern, dass diese nicht mehr korrekt ausgeführt werden kann.

Leider finde ich nichts dergleichen in der Doku oder im Debugger. Laut Dokumentation müsste das Argument, das Leerzeichen enthält, mit \"\"\" verwendet werden.

Wenn ich allerdings folgendes Programm ausführen möchte, so geschieht dies auch problemlos, entgegen meiner Vermutung
notepad.exe \"C:\\Dokumente und Einstellungen\\User\\Desktop\\test.txt\"
Entsprechend müsste meine Zeichenkette ebenfalls so ausgeführt werden, was allerdings nicht der Fall ist.

Ich hoffe dieses Problem sagt jemandem etwas und mir kann geholfen werden. Mir gehen nämlich langsam die Ideen und Variationen der Tests aus.



LG KK

Verfasst: 27. August 2009 09:04
von solarix
hmm.. evt. gäbe es noch folgende 2. Varianten:

1. Ich halte Argumentlisten für sauberer.. funktioniert es denn mit "QProcess::startDetached ( const QString & program, const QStringList & arguments"?

2.
Leider finde ich nichts dergleichen in der Doku oder im Debugger. Laut Dokumentation müsste das Argument, das Leerzeichen enthält, mit \"\"\" verwendet werden.
Genau.. warum versuchst du es dann nicht mit
C:/mysql/bin/mysql.exe --user=usr --password=pwd --host=192.168.3.93 database --execute=\"\"\"SELECT * FROM table\"\"\" > c:\\local_mysql_dump\\table.sql