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 :

Une simple complication

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juillet 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Juillet 2017
    Messages : 5
    Par défaut Une simple complication
    Bonjour,

    Mon premier message sur le forum pour, oui, un problème. J'espère revenir régulièrement pour mieux dans les temps a venir.
    Je suis plutôt bash à la base. Je commence avec C++ et Qt par obligation pro. Du coup le simple se transforme en cauchemard pour moi.
    Mais peut-être pas pour vous?

    Dans mon code je créer un fichier txt comprenant plusieurs lignes de 9 suite de caractères.
    Je veux SIMPLEMENT supprimer les 8 première. Mais avec Qt.

    En ce moment je fait

    system("awk '{print $9}' /tmp/list.txt > /tmp/list2.txt");
    system("mv /tmp/list2.txt /tmp/list.txt");


    Ce qui marche très bien... mais n'est pas du Qt. Ce qui gène mon responsable. Ce qui me gène moi.

    Des idées, piste voir fonctions déjà prête ou presque?

  2. #2
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 736
    Par défaut
    Bonjour, bienvenue sur le forum

    En effet, ton appel à system est dépendant du système d'exploitation.

    Une approche plus classique serait de lire ton fichier ligne par ligne et de stocker chaque ligne dans un QStringList.

    Une simple recherche donne plusieurs exemples, comme ici

    Code Qt : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    QFile file;
    file.open(/* ouverture du ficher */);
    QStringList list;
     
    while(!file.atEnd())
        list.append(file.readLine());
     
    QString ligne = list[9]

    J'imagine que d'autres approches existent.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juillet 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Juillet 2017
    Messages : 5
    Par défaut
    Merci.

    Je planche a partir de ça

    J'ai encore du mal a rentrer dedans mais j'ai pas a m'inquiéter : il me reste 5 heures pour clore le code.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juillet 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Juillet 2017
    Messages : 5
    Par défaut
    Bonjour,

    Il s'avère que les mots ou dates du fichier sont séparé par les espaces, espaces multiples ou tabulation.
    Du coup j'ai du mal a split tout en gardant des lignes et non pas des suite de caractères.

    En clair mon fichier ressemble a

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    12/05  yaca ici         juskdmain  a  laba
    13/05  yici ici         juskdmain  a  loba
    02/06  yaca ici         juskier    au lava
    15/06  yola ici         juskla     a  lada
    Et mon srtring est du coup 12/05
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "yaca" "ici" "juskdmain" "a" "laba" "13/05" "yici" "ici" "juskdmain" "a" "loba" ...etc
    Sachant que je ne veux récupérer au final que
    laba
    loba
    lava
    lada

    désolé si encore une fois c'est une complication simpliste

  5. #5
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juillet 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Juillet 2017
    Messages : 5
    Par défaut
    J'avoue hésiter a refaire un thread avec un nom plus clair pour ce qui vient... mais on va tester comme ça.

    J'y suis PRESQUE!

    Je ne comprend juste pas pourquoi je ne peux pas compiler.

    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
    QFile file( "/tmp/list.txt");
        file.open(QIODevice::ReadOnly | QIODevice::Text);
     
        QTextStream in(&file);
        QStringList lastWordList= QStringList();
        while (!in.atEnd())
           {
              QString line = in.readLine();
              qDebug() << "line=" << line;
              QStringList splittedLine = line.split(QRegExp("\\s+"));
              QString lastWord = splittedLine.at(splittedLine.size() -1);
              qDebug() << "lastWord=" << lastWord;
           }
           qDebug() << "last=" << lastWordList;
        file.close();
     
        QFile ofile( "/tmp/olist.txt");
        ofile.open(QIODevice::WriteOnly | QIODevice::Text);
     
        QTextStream out(&file);
        out << lastWordList.join);
        ofile.close();
    Voila...

    Mais pourquoi la compile me plante au niveau de out? (ligne 21)

  6. #6
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 736
    Par défaut
    Quel est le message d'erreur ?

    Le code a l'air correct, hormis le soucis de parenthèse join), erreur de frappe ?

  7. #7
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juillet 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Juillet 2017
    Messages : 5
    Par défaut
    Le problème venait de 2 choses
    Je n'ai pas inclus lastWord (ligne 10) a lastWordList (ligne 4)
    Et surtout pas de ("\n") a mon .join

    Donc code final et fonctionnel


    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
        QFile file( "/tmp/tlist.txt");
        file.open(QIODevice::ReadOnly | QIODevice::Text);
     
        QTextStream in(&file);
        QStringList lastWordList= QStringList();
        while (!in.atEnd())
           {
              QString line = in.readLine();
              QStringList splittedLine = line.split(QRegExp("\\s+"));
              QString lastWord = splittedLine.at(splittedLine.size() -1);
              lastWordList << lastWord;
           }
     
        file.close();
     
        QFile ofile( "/tmp/list.txt");
        ofile.open(QIODevice::WriteOnly | QIODevice::Text);
     
        QTextStream out(&ofile);
        out << lastWordList.join("\n");
        ofile.close();
    Merci a toi ^^

    EDIT: Un peu tard mais merci Stephane. Je suis en train de m'essuyer les pieds nus sur un râpe a fromage en guise de pénitence.

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

Discussions similaires

  1. [FreePascal] Problème pour une simple liste chaînée
    Par piff62 dans le forum Free Pascal
    Réponses: 3
    Dernier message: 26/11/2005, 19h25
  2. comment creer une simple application graphique.
    Par pug dans le forum Interfaces Graphiques en Java
    Réponses: 23
    Dernier message: 25/11/2005, 02h05
  3. Réponses: 10
    Dernier message: 02/11/2005, 11h12
  4. PageControl -> Une simple question
    Par Invité dans le forum C++Builder
    Réponses: 4
    Dernier message: 08/05/2004, 09h19

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