Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème d'écriture sous Qt avec QDataStream

Sujet résolu
    11 juin 2008 à 12:08:59

    Bonjour tout le monde

    Je suis en train d'essayer d'améliorer le TP sur le générateur de code de classe automatique et je bloque lors de l'écriture dans un fichier.
    J'ai bien lu la doc et les infos que j'ai pu trouver sur le net mais j'ai toujours un bug.
    J'ai écrit le code suivant :
    QFile *fichierH = new QFile(cheminFichierH);
        if(!fichierH->open(QIODevice::WriteOnly)) {
            QMessageBox::critical(this, "Erreur fichier", "Erreur lors de l'ouverture du fichier");
            return;
        }
        QDataStream out(fichierH);
        out.setVersion(QDataStream::Qt_4_4);
        out << codeH;
        fichierH->close();
    


    Ca me crée bien le fichier et ça écrit dedans. Le problème c'est que ca me met des espaces entre chaque caractère quand je l'ouvre avec le bloc-note et avec notepad ca me met des caractères bizarres du type <NUL>...

    Edit : je précise que la variable codeH est de type QString

    Si quelqu'un a une idée pour résoudre ce problème, je le remercie d'avance !

    cyberlulu
    • Partager sur Facebook
    • Partager sur Twitter
      11 juin 2008 à 12:25:30

      essaye d'ouvrir ton fichier avant d'y écrire

      fichierH->open(QIODevice::ReadWrite);

      edit
      ah j'ai rien dit l'as déjà fait ^^

      pourtant j'avais fait exactement la même chose que toi et le code marche
      fichierH = new QFile(QCoreApplication::applicationDirPath() + "/" + nom->text() + ".h");
      	fichierH->open(QIODevice::ReadWrite);
      	QTextStream out(fichierH);
      	out << codeH;
      	fichierH->close();
      
      • Partager sur Facebook
      • Partager sur Twitter
        11 juin 2008 à 12:31:01

        Non il n'y a pas de changement... toujours le même problème.
        Comme l'écriture fonctionne je pense pas que ca soit à ce niveau (enfin fonctionne avec des caractères en trop...)
        En fait tout le texte que j'affiche dans une zone de texte est stocké dans une seule QString (comme Mateo dans son tuto).
        Et c'est cette QString que j'essaye d'écrire directement.

        Edit : ok je viens de voir ton edit. c'est bizarre chez moi ca ne fonctionne pas... j'ai toujours des caractères entre chaque lettre...
        • Partager sur Facebook
        • Partager sur Twitter
          12 juin 2008 à 13:42:47

          personne d'autre aurait une idée d'où pourrait venir ce problème ?
          J'ai encore trafiqué quelques trucs mais j'ai pas trouvé...
          • Partager sur Facebook
          • Partager sur Twitter
            12 juin 2008 à 13:59:14

            Salut. Déja pour du text, il faut mieux utiliser QTextStream.
            Ensuite, il doit surement écrit avec un encodage utf16 ou autre...
            Il te faut surement changer ce codec en utf8 ou autre

            http://doc.trolltech.com/4.4/qtextstream.html#setCodec
            • Partager sur Facebook
            • Partager sur Twitter
              12 juin 2008 à 14:18:28

              ça fonctionne ! merci beaucoup.
              J'avais pas vu QTextStream. J'étais tombé sur un exemple avec QDataStream dans un des tutos de la doc...
              • Partager sur Facebook
              • Partager sur Twitter

              Problème d'écriture sous Qt avec QDataStream

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown