Bonjour voici un bout de code que j'ai simplifié au max pour isoler mon problème:
Le but est de parser un fichier texte ligne par ligne ( ici pour simplifier je me contente de les compter)
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 #include <QtCore/QCoreApplication> #include <QFile> #include <QTextStream> int main(int argc, char *argv[]) { if (argc > 1){ qint32 lineCounter = 0; QFile myfile(argv[1]); if(myfile.exists()){ if(myfile.open(QIODevice::ReadOnly)){ QTextStream stream(&myfile); while(!stream.atEnd()){ qint64 position = stream.pos(); QString line = stream.readLine(); lineCounter++; } } } return lineCounter; } return -1; }
Ca marche tant que le fichier que je passe en paramètre ne fait pas plus d'environ 16500 octets.
Mais dés que le fichier est trop gros ça boucle sans fin ( stream.pos() renvoi -1, atEnd() ne renvoie jamais true, readLine() renvoi les lignes du debut du fichier).
Configuration : QT4.6.4 opensource-vs2008 ( dll en release ), windows XP, env: Qt creator ou visual studio
En utilisant directement le QFile ça à l'air de marcher, mais j'aimerais savoir pourquoi le QTextStream ne fonctionne pas, ou si c'est mon cerveau.
Merci
JB
Partager