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 :

Lecture de fichier et placement dans une variable

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Apprentie Développeuse
    Inscrit en
    Février 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Apprentie Développeuse
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 106
    Par défaut Lecture de fichier et placement dans une variable
    Bonjour à tous ,

    j'ai un petit problème j'ai un fichier .txt comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ligne = 2
    colonne = 4
    et je veux récupérer mes valeurs 2 et 4 pour cela j'ai crée une fonction , qui marchait très bien , mais après plusieurs modifications de mes valeurs cette fonction plante mon programme je pense que j'ai un problème de mémoire mais je ne suis pas sûre
    Voila 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    int MainWindow::fichierConf(){
     
        QFile fichier("C:/Users/Downloads/fichierConfigurationBoutons.txt");
        int resultat = 0;
        int colonne , ligne;
     
        if (!fichier.open(QIODevice::ReadOnly)) {
            //Si l'ouverture échoue
            QMessageBox::information(this, "Fichier de configuration", "Le fichier de configuration ne s'est pas ouvert ");
            resultat = 0;
        }
        else {
            //Si l'ouverture fonctionne on continue:
            QTextStream flux(&fichier);
            flux.seek(0);
     
            QString Line = flux.readLine();
            while(!Line.isNull()){
                if(Line.contains("ligne",Qt::CaseSensitive)){
                    QStringList liste = Line.split("=");
                    liste.removeFirst();
                    QString ligneValeur = liste.join(QString("="));
                    QString ligneString = ligneValeur;
                    ligne = ligneString.toInt();
                    Line = flux.readLine();
                }
     
                if(Line.contains("colonne",Qt::CaseSensitive)){
                    QStringList liste2 = Line.split("=");
                    liste2.removeFirst();
                    QString ligneValeur2 = liste2.join(QString("="));
                    colonne = ligneValeur2.toInt();
                }
     
                int  nombre = ligne * colonne;
     
                resultat = nombre;
            }
     
        }
        return resultat;
    }
    Mon programme a l'air de planter à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if(Line.contains("ligne",Qt::CaseSensitive))
    je ne comprend absolument pas pourquoi ..
    merci de bien vouloir m'aider

    Bonne journée

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Si tu n'as que ces deux lignes, pourquoi cette boucle while ?

    Ton removeFirst() + join() à la suite du split() est inutile : il te suffit de prendre le deuxième élément de la liste (en vérifiant éventuellement qu'elle contient deux éléments, et donc la valeur est bien présente dans le fichier).

    Sinon ton erreur principale et de ne passer à la ligne suivante que lorsque tu rentres dans le if
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(Line.contains("ligne",Qt::CaseSensitive)){

  3. #3
    Membre confirmé
    Femme Profil pro
    Apprentie Développeuse
    Inscrit en
    Février 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Apprentie Développeuse
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 106
    Par défaut
    bonjour Winjerome ,

    merci de ta réponse.
    j'ai fait une boucle parce que après je vais sûrement ajouter d'autres élements dans le fichier.

    donc si j'ai bien compris il faut que dans mon if je fasse un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Line = flux.readline();
    et pareil dans mon 2ème if ?

    j'ai testé ça marche !! une erreur toute bête merci beaucoup

  4. #4
    Invité
    Invité(e)
    Par défaut
    Pas la peine de répéter la ligne dans chaque if, mets-la simplement après.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/10/2011, 18h45
  2. [Think Pascal] Mettre la lecture de la touche ENTRER dans une variable de type char
    Par inidark dans le forum Autres IDE
    Réponses: 1
    Dernier message: 21/05/2009, 23h21
  3. Récupérer le nom du fichier en cours dans une variable.
    Par quiky dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 06/05/2009, 13h28
  4. Réponses: 8
    Dernier message: 25/09/2007, 08h31
  5. Récupérer contenu de fichier dans une variable
    Par peppena dans le forum Linux
    Réponses: 4
    Dernier message: 15/06/2005, 12h50

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