Appel programme dont le chemin contient des caractères espace
Bonjour a tous, et merci d'avance pour vos posts
j'avais tout d'abord posté cette question dans le forum Qt Débutant,
ce n'était peut-être pas le bon
voici ma question :
cette première séquence fonctionne très bien
Code:
1 2 3
| QString file = "C:\\Users\\jclaude\\Programs\\dossierbidon\\toto.exe";
QProcess *process = new QProcess();
process->start(file); |
puis le programme à lancer est placé dans un répertoire contenant un espace
et ça ne marche plus
Code:
1 2 3
| QString file = "C:\\Users\\jclaude\\Programs\\dossier bidon\\toto.exe";
QProcess *process = new QProcess();
process->start(file); |
je me doute bien qu'il y a un loup avec cet espace,
Dans la vraie vie, j'ai besoin de lancer un programme dans
un chemin avec des espaces (et aussi des caractères spéciaux)
Avant de vous soumettre ce code, j'ai parcouru les forums mais je n'ai rien trouvé, ou alors j'ai mal cherché.
En tout cas merci beaucoup aux âmes charitables qui voudront bien m'aider
polesub
Appel programme dont le chemin contient des caractères espace
Merci Foetus pour ta réponse,
tu m'as mis sur la voie en parlant d'échappement et de Qt,
Effectivement sur la doc Qt, on trouve quelque chose sur process->start ( "fichier avec espace.exe");
La solution (qui sort du diable vauvert) est :
il faut entourer la chaine avec les séquences d'échappement \"
ce qui donne process->start ( "\"fichier avec espace.exe\"");
pourquoi faire simple quand on peut faire compliqué.
Bref, tout marche du feu de dieu, à titre d'illustration je donne ici un morceau du vrai code
qui marche et qui permet d'afficher un fichier pdf
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| void MainWindow::on_actionOuvrirPdf()
{
int ligne;
QVariant data;
QString DatasheetFile;
// chemin du lecteur de pdf
QString file ="\"C:\\Program Files (x86)\\Foxit Software\\Foxit Reader\\FoxitReader.exe\"";
// extraction du nom du fichier à lire
ligne = (ui->tableComposants->currentIndex()).row();
QSqlQuery query("SELECT `DATASHEET` from `itemcomp` ");
QSqlRecord record = query.record();
query.seek(ligne);
data = query.value(record.indexOf("DATASHEET")).toString();
DatasheetFile = dataSheets+ "\\"+ data.toString() + ".pdf";
// lancement du lecteur pdf
QProcess *process = new QProcess();
process->start(file, QStringList()<<QString(DatasheetFile));
} |
merci et à bientôt, je marque cette question comme résolue.
polesud