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

Qt Discussion :

Impossible d'ouvrir un fichier XML


Sujet :

Qt

  1. #1
    Candidat au Club
    Homme Profil pro
    Etudiant en informatiqe
    Inscrit en
    Octobre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Etudiant en informatiqe

    Informations forums :
    Inscription : Octobre 2017
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Impossible d'ouvrir un fichier XML
    Bonjour à tous!!
    ceci est mon premier discussion dans un forum car à chaque problème que je rencontre je trouve toujours une solution existante mais maintenant j'suis bloqué et je trouve pas de solution.
    Bon voilà mon problème, je développe une application qui marche avec un fichier de configuration formaté en xml et j'aimerai utiliser QXmlStreamWriter pour modifier le fichier mais le fichier s'ouvre pas.
    voici mon code=>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    HXmlManager::HXmlManager()
    {
        //":/flies/conf" est un fichier ressource de l'application 
        configurationFile = new QFile(":/files/conf");
     
     
        if (!configurationFile->open(QIODevice::ReadOnly))
        {
            qDebug("not  Opened");
            emit fileNotOpened("Erreur d'ouverture du fichier de configuration!");
            configurationFile->close();
            configurationDom= new QDomDocument();
            return;
        }
     
        configurationDom= new QDomDocument();
        configurationDom->setContent(configurationFile);
        configurationFile->close();
        configurationDomElement = new QDomElement(configurationDom->documentElement());
     
     
        configurationFile->open(QFile::WriteOnly | QFile::Text);//problème: impossible d'ouvrir le fichier ici!
     
        outXml = new QXmlStreamWriter();
        outXml->setDevice(configurationFile);
     
        outXml->writeStartElement("database");//juste pour le test
        outXml->writeAttribute("DBName","ho");
        outXml->writeEndElement();
     
        configurationFile->close();
    }
    j'ai essayé d'enlever l'ouverture pour la première ouverture mais ça montre toujours à la sortie de l'aplication "QIODevice::write (QFile, ":\files\conf"): device not open".
    J'ulitilise Qt5.11.2
    Besoin d'aide urgent, merci

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 617
    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 617
    Points : 188 587
    Points
    188 587
    Par défaut


    Déjà, tu ne vérifies pas le code de retour de ton deuxième QIODevice::open. Ensuite, ça me paraît un peu tordu d'ouvrir deux fois le même fichier : ne pourrais-tu pas directement l'ouvrir en lecture et écriture, une seule fois ?

    Autre source de problèmes : tu sembles lire un fichier dans tes ressources (QRC), sauf que ces ressources sont compilées dans l'exécutable et ne sont donc pas modifiables.
    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
    Candidat au Club
    Homme Profil pro
    Etudiant en informatiqe
    Inscrit en
    Octobre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Etudiant en informatiqe

    Informations forums :
    Inscription : Octobre 2017
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Salut!
    Merci #dourouc05 , enfaite j'ai pas encore mis la vérification de l'ouverture vu que j'ai fait des petits test avant de faire le code complet mais bon c'est fait en ce moment mais c'est quand même pas ça qui règlera le problème Je crois le problème viens du fait qu'on peut pas modifier un fichier ressource du coup je vais mettre le fichier dans un dossier de mon programme et l'ouvrir en lecture et écriture dans un tel situation(quand je pense au temps que j'ai perdu pour résoudre ça je me rend compte à quel point je suis débutant ). je sais pas comment taguer ici
    je vais marquer résolu maintenant, merci pour l'aide

  4. #4
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Salut,
    Citation Envoyé par dourouc05 Voir le message
    Ensuite, ça me paraît un peu tordu d'ouvrir deux fois le même fichier : ne pourrais-tu pas directement l'ouvrir en lecture et écriture, une seule fois ?
    En fait, bien pire que cela ...

    Ce qui me paraît particulièrement tordu, c'est de vouloir faire de la lecture ET de l'écriture dans la même fonction

    SRP nous conseille en effet d'avoir:
    1. une fonction pour charger le contenu du fichier en mémoire
    2. une (ou plusieurs) fonction(s) pour modifier le contenu qui se trouve en mémoire
    3. une fonction pour enregistrer les modifications

    Cela permet de rendre chaque fonction beaucoup plus simple à comprendre, vu qu'elle ne s'occupe que d'une seule chose, le code beaucoup plus explicite, vu qu'il prendrait une forme proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    auto content = read(filename),
    modify(content);
    write(filename, content);
    Et, enfin, cela présente l'énorme avantage (ou inconvénient selon le cas) de laisser le fichier à disposition de tout autre processus qui voudrait y accéder entre le read et le write

    Par contre, que l'on ne vienne pas me dire que cela réduira les performances :

    Entre le XML et le traitement DOM, qui n'est clairement pas ce qui se fait de plus léger, les accès au disque dur, qui sont clairement parmi les accès les plus lents que l'on peut trouver, et l'utilisation potentielle d'une IHM (vu que l'on est dans la partie Qt) qui risque de nécessiter une action de la part de l'utilisateur, ce n'est pas le fait d'appeler trois malheureuses fonctions au lieux d'une seule qui fera une différence
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

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

Discussions similaires

  1. Problème XML word - Impossible d'ouvrir un fichier
    Par Ben604 dans le forum XML/XSL et SOAP
    Réponses: 0
    Dernier message: 31/03/2016, 10h27
  2. comment ouvrir un fichier XML avec excel
    Par ALCINA dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 24/03/2006, 14h42
  3. IE : impossible d'ouvrir un fichier
    Par alexixlebaulois dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 23/12/2005, 11h08
  4. [DOM] [JAVA + XML] Ouvrir un fichier xml à partir d'une url
    Par Hell dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 09/06/2005, 00h06
  5. [DOM] Ouvrir un fichier XML
    Par Malaussene dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 02/09/2004, 14h46

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