QProcess - Probleme mit Argumenten

Alles rund um die Programmierung mit Qt
Antworten
KartoffelKiffer
Beiträge: 101
Registriert: 27. Februar 2008 15:59

QProcess - Probleme mit Argumenten

Beitrag 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
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag 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
Antworten