IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Passer des paramètres avec espace à QProcess

  1. #1
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 443
    Points : 43 088
    Points
    43 088
    Par défaut Passer des paramètres avec espace à QProcess
    Bonsoir,

    J'ai un soucis au passage de paramètres quand ceux-ci comportent des espaces.

    extrait dei mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    QProcess process;
    programme="\""+programme+"\"";
    filename="\""+filename+"\"";
    process.startDetached(programme,QStringList()<<QString(filename));
    programme et filename sont des QString récupérés depuis la fonction QFileDialog::getOPenFilename.

    Si je commente la ligne filename="\""+filename+"\"";, que j’essaye d’ouvrir le fichier "ab cd.doc" avec Word (dans programme), il me met l'erreur "impossible de trouver le fichier c:\users\Desktop\moncompte\ab%20cd.doc (le path est bon), et en décommettant j’obtiens en retour d'erreur word
    "impossible de trouver le fichier c:\c:\users\Desktop\moncompte\ab
    Un Qdebug sur filename retourne respectivement "c:\users\Desktop\moncompte\ab cd.doc" et ""c:\users\Desktop\moncompte\ab cd.doc"" selon que je commente ou non filename="\""+filename+"\"";
    J'joute que programme contient des espaces car mon word se trouve dans c:\program files (x86).
    J'ai essayé avec QStringList()<<filename et QStringList()<<QString(filename).toAscii() sans que ça change quoi que ce soit.

    Merci pour votre aide.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 591
    Points
    188 591
    Par défaut


    Une recherche sur le mot "space" dans la documentation de QProcess donne notamment la fonction http://doc.qt.io/qt-5/qprocess.html#setNativeArguments, ça vaut peut-être la peine d'essayer (apparemment, former une grosse chaîne de caractères en gérant toi-même toutes les affaires d'échappement).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 443
    Points : 43 088
    Points
    43 088
    Par défaut
    Je suis pas arrivé à mieux avec cela, mais il semble que je sois pas le seul à avoir le prob. Je vais essayer avec system(). Je remonterais mes résultats.

    Par ailleurs, je suis sur Qt 4.8.

    Merci quand-même.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 443
    Points : 43 088
    Points
    43 088
    Par défaut
    J'ai réglé mon prob.

    Voici la solution si ça peut aider quelqu'un d'autre:

    Avec programme et filename QStrings étant retourné par QFileDialog::getOpenFileName pour respectivement sélectionner l'application à lancer et filename le fichier qui sera l'argument :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    programme.replace("/","\\");
    programme="\""+programme+"\"";
    filename.replace("/","\\");
    QStringList arguments=QStringList()<<filename;
    QProcess process;
    process.startDetached(programme,arguments);
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Passer des paramètres avec Connect()?
    Par Arkhiall dans le forum wxWidgets
    Réponses: 0
    Dernier message: 15/04/2008, 23h31
  2. [D7] Passer des paramètres avec Synchronise
    Par Hell dans le forum Langage
    Réponses: 4
    Dernier message: 12/01/2008, 17h40
  3. Problème avec passer des paramètres
    Par Mac2k3 dans le forum WebDev
    Réponses: 6
    Dernier message: 29/05/2007, 14h08
  4. Réponses: 5
    Dernier message: 16/11/2006, 07h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo