Partage
  • Partager sur Facebook
  • Partager sur Twitter

{Qt]Split d'une QString => lire chaque partie de la QStringL

ligne par ligne!

    19 juin 2008 à 23:16:21

    Bonjour à tous!

    Pour mon projet actuel, j'ai besoin de parcourir des fichiers ligne par ligne, afin de repérer leur contenu pour savoir si ce sont des balises!

    j'ai donc fait un split de la QString qui contient mon texte à chaque \n!

    Jusque là, ca va, ensuite, je fais une boucle, avec un int qui s'incremente en partant de 0, et j'ai ajouté un if...else if...else, pour voir si je repere des balises... sauf que ca ne repere rien!

    Voila le code qui plante :
    QStringList texteParLigne = transmettre->split("\n");
        //les lignes sont toutes séparées
    
        long ligne = 0;
        long chapitre = 0;
        bool fin = false;
        long finChapitreUn = 0;
        QRegExp titre("^<titre");
        QRegExp chapEnd("^</chap");
        QString ligneEnCours;
        if(texteParLigne.count() > 1)
        {
            QMessageBox::information(this, "Texte", "" + texteParLigne.at(2));//ce message s'affiche comme il faut!
    
        do
        {
    
    
            if(texteParLigne.at(ligne) == "<projet>")
            {
                //première ligne du projet
            }
            else if(texteParLigne.at(ligne) == "<chap1>")
            {
                QMessageBox::information(this, "début chapitre", "début du chapitre un trouvé!");//ce message ne s'affiche pas!
                chapitre++;
            }
            else if(texteParLigne.at(ligne) == "</chap1>")
            {
                finChapitreUn = ligne - 1 ;
                QMessageBox::information(this, "fin chapitre", "fin du chapitre un trouvée!");//ce message ne s'affiche pas!
                //Fin du premier chapitre
                //Tout le texte de la ligne 3 à la ligne "ligne" est le premier paragraphe!
            }
            else if(texteParLigne.at(ligne) == "</projet>")
            {
                //dernière ligne
                fin = true;
            }
            else
            {
                QMessageBox::information(this, "Else", "Else");//ce message s'affiche à chaque tour que fait la boucle...
            }
            ligne++;
        }while ( fin == false );
        setWindowTitle("" + texteParLigne.at(2));
        ligne = 6;
        QString corpsTexte;
        while(ligne <= finChapitreUn)
        {
            corpsTexte.append(texteParLigne.at(ligne));
            ligne++;
        }
        texte->setText("hahaha" + corpsTexte);
        }
        else
        {
           QMessageBox::information(this, "Erreur", "Erreur");//ce message s'affiche s'il y a une erreur dans l'envoi du fichier
        }
    QMessageBox::information(this, "Fin", "Fin");//ce message ne s'affiche pas!
    


    Comme vous pouvez le voir, il y a des messagebox partout, pour voir ce qui est reconnu par le while et ce qui ne l'est pas... en en faite, il n'y a que celui du "else", donc j'en déduit que ca marche pas trop!
    • Partager sur Facebook
    • Partager sur Twitter
      19 juin 2008 à 23:19:48

      dans ce genre de problème il est obligatoire de nous montrer ton code pour pouvoir t'aider.
      • Partager sur Facebook
      • Partager sur Twitter
      :)
        19 juin 2008 à 23:31:15

        j'ai rajouté le code necessaire
        • Partager sur Facebook
        • Partager sur Twitter
          20 juin 2008 à 0:18:10

          si c'est pour gérer du XML, utilise directement le module XML (même s'il est un peu casse-couille à comprendre quand on connait pas)
          • Partager sur Facebook
          • Partager sur Twitter
            20 juin 2008 à 0:31:57

            oh non, c'est pas du XML... en fait je crois que l'erreur vient du fait que texteParLigne.at(ligne) ne signifie rien pour lui, mais pourtant si je mets une vraie valeur à la place de ligne, ca fonctionne?!? des idées?
            • Partager sur Facebook
            • Partager sur Twitter

            {Qt]Split d'une QString => lire chaque partie de la QStringL

            × 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