Forum: PC-Programmierung QT Daten aus Textfile in Thread verarbeiten


von David (Gast)


Lesenswert?

Hallo Leute


Ich habe ein Text-File (.txt) in dem sind Daten abgelegt, dies sieht 
etwas so aus:

100000000000
110000001011
111000
100000000111
110000100001
110000101111
100010100001

Ich möchte in QT dises Texfile öffenen und in einem Thread die Daten 
verarbeiten.
Ich konnte das File erfolgreich öffenen.
1
myfile->setFileName(filepath);
2
myfile->open(QIODevice::ReadOnly | QIODevice::Text);
Nun weiss ich jedoch nicht wie ich die Daten am besten aus dem 
geöffneten File lade und sie dem Thread für die Verarbeitung übergebe.

Im Thread möchte ich die Daten in obiger Struktur haben, und Linie um 
Linie verarbeiten können.
Als erster Veruch habe ich alle Daten mit
1
QByteArray myArray=myfile->readAll();
aus dem File gelsen und in ein QByteArray geschrieben, welches ich 
anschliessend den Thread übergeben habe, doch so konnte ich nicht mehr 
Linie um Linie aus QByteArray lesen.
Ich habe verschiednes mit QTextStream versucht, doch auch da war ich 
nicht erfolgreich.
Kann mir jemand einen Weg aufzeigen wie dies im Normalfall gemacht wird?

Wäre sehr dankbar
Gruss David

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Warum muss es denn unbedingt ein Thread sein?  Solange das File nicht
gerade mehrere hundert Megabyte groß ist, kann man das ja wirklich
am Stück einlesen, ohne sich erst den Overhead eines Threads geben zu
müssen.

Einen Thread würde ich dann benutzen (bzw. habe es so getan), wenn die
Daten Stück für Stück aus einer eher langsamen Quelle kommen.  Dann
muss man sich aber natürlich immer Gedanken um die Synchronisation der
Threads machen (Stichworte: Mutex und Wait Condition).

Aus deinem Posting ist auch nicht so ganz ersichtlich, welche
Bewandnis es hat, dass du die Daten zeilenweise lesen willst.

von pks (Gast)


Lesenswert?

Mal abgesehen vom Thread-Thema:
1
QByteArray myArray=myfile->readAll(); 
2
QString str(myArray);
3
QStringList lines(str.split("\n"));

Damit sollte in list der Inhalt nach Zeilen getrennt stehen.

: Bearbeitet durch Moderator
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.