Daten aus datei lesen

Alles rund um die Programmierung mit Qt
Antworten
Treehouse
Beiträge: 100
Registriert: 18. Juni 2007 10:21

Daten aus datei lesen

Beitrag von Treehouse »

Hallo zusammen,

ich habe folgendes Problem ich muss daten aus einer Datei lesen um sie nachher zu entschlüsseln.
Mit der normalen fstream mache ich das so:

Code: Alles auswählen

fstream in( infile, fstream::in | fstream::out);
in.getline(inbuf, 1024);
Jetzt habe ich das ganze rein mit QT gemacht und das sieht so aus:

Code: Alles auswählen

userData = new QFile;
userData->setFileName("userData.dat");
userData->open(QIODevice::ReadOnly);
QDataStream in(userData);

in.readRawData(inbuf, 1024);
Mein Problem ist das die normale fstream Variante ohne Probleme funktioniert. Nehme ich meine Qt Variate bekomme ich fehler in der Entschlüsselung, was mich darauf schließen läßt das die Zeile aus der Datei nicht richtig eingelesen wird.

Kann mir vielleicht jemand sagen was ich da falsch mache ??


Gruß

Treehouse
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

Du machst garnichts falsch. Hab sowas leider auch schon bemängeln müssen.... Ich denke du musst es wieder mit fstream machen.

oder so:

Code: Alles auswählen

QString userData;
        QFile f("userData.dat");
	if(f.open(QIODevice::ReadOnly))
	{
		char c;
		while(!f.atEnd()) {
	        
			f.getChar(&c);
			userData+= c;
	    }
		
	}
Das funktioniert bei mir jedenfalss mehr oder weniger zuverlässig.
C_R
Beiträge: 129
Registriert: 25. April 2007 15:12

Beitrag von C_R »

Ich hatte das Problem (Qt 4.1.1), dass die Konvertierung bzw. der Modus Big/LittleEndian nicht funktionierte und ich die Byteorder per Hand ändern musste. Vielleicht ist das dein Problem? Ansonsten sei der Hinweis zu beachten, dass der Buffer im Voraus allokiert werden muss.
Zudem..wie ist denn deine *.dat Datei aufgebaut? Hast du die Whitespaces richtig definiert (ggf. nach Stream zu String) etc..?
Treehouse
Beiträge: 100
Registriert: 18. Juni 2007 10:21

Beitrag von Treehouse »

Ich denke KernelPanic hat schon recht das es da zu kleinen Problemen kommt.

Beim normalen fstream gibt es doch die option "wb" also write Binary. Ist das dann unter QT der DataStream mit der funktion writeRawData ????

weil dann habe ich meinen Fehler vielleicht , ansonst nehme ich die normale fstream.

C_R das mit den Whitspaces usw. ist dabei nicht so relevant da es ein verschlüsselter Brei ist der in eine Datei geschrieben wird. Von daher kann ich dir nicht sagen wann die welches Leerzeichen usw setzen.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ich glaube ihr solltet die Doku mal lesen:
The QDataStream class provides serialization of binary data to a QIODevice.

A data stream is a binary stream of encoded information ...
Ein QFile::readAll() reicht vollkommen aus - nichts mit QDataStream nötig...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten