Wie setze ich einen QBuffer ein

Alles rund um die Programmierung mit Qt
Antworten
Slowmo
Beiträge: 25
Registriert: 21. März 2007 16:02
Kontaktdaten:

Wie setze ich einen QBuffer ein

Beitrag von Slowmo »

Ich möchte mit einem Textstream etwas in ein QByteArray schreiben. Als verbindende Klasse habe ich dazu den QBuffer gefunden (Zitat aus dem Assistant: "The QBuffer class provides a QIODevice interface for a QByteArray."). Ich habe es wie folgt versucht, aber die Datei, welche am Ende geschreiben werden soll bleibt immer leer:

Code: Alles auswählen

	QBuffer Buffer;
	QTextStream OutputStream;
	QByteArray BufferArray;
	QFile *ConfFile = new QFile(QDir::homePath()+"/.program/bla");

	Buffer.open(QIODevice::ReadWrite);
	Buffer.setBuffer(&BufferArray);
	OutputStream.setDevice(&Buffer);
	OutputStream << ("bla\n");
	OutputStream << ("mehr bla");
	ConfFile->open(QFile::ReadWrite);
	ConfFile->write(Buffer.readAll());
Beim letzten Befehl habe ich schon so einiges eingesetzt (Buffer.data()/BufferArray) aber nichts hat funktioniert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Und warum das ganze So umständlich?

Code: Alles auswählen

QFile f("settings.txt");
f.open(QIODevice::ReadWrite);
QTextStream ts(&g);
ts << "blah";
f.close();
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Slowmo
Beiträge: 25
Registriert: 21. März 2007 16:02
Kontaktdaten:

Beitrag von Slowmo »

Ja, so hatte ich es auch schon, aber später (in einer weiter fortgeschrittenen Version meines Programms) brauche ich das ByteArray (bzw. werde ich es brauchen) und deshalt beibt mir diese einfache Version verwehrt.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Na dann würde ich erstmal das ByteArraya setzen und dann den Buffer öffnen :)
Und mal hier schauen - da steht alles gut erklärt da: http://doc.trolltech.com/4.3/qbuffer#details
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Slowmo
Beiträge: 25
Registriert: 21. März 2007 16:02
Kontaktdaten:

Beitrag von Slowmo »

Okay, das mit dem Byte Array war doof, aber am Ergebnis hat sich nichts geändert. Das Problem ist ja, dass ich es genauso mache wie das Qt-Beispiel das bei der Dokumentation dabei ist (ein Analphabet bin ich schleißlich nicht, ich versuche nur Fragen zu stellen wenn ich selbst mit Doku nicht weiter weiß):

Mein (neuer) Code:

Code: Alles auswählen

	QByteArray BufferArray;
	QBuffer Buffer(&BufferArray);
	Buffer.open(QIODevice::ReadWrite);
	QTextStream OutputStream(&Buffer);
	//Hier wird was in den TextStream geschrieben
	QFile *ConfFile = new QFile(QDir::homePath()+"/.program/bla");
	ConfFile->open(QFile::ReadWrite);
	ConfFile->write(Buffer.buffer());
	ConfFile->close();
Der von Trolltec:

Code: Alles auswählen

	QByteArray byteArray;
     QBuffer buffer(&byteArray);
     buffer.open(QIODevice::WriteOnly);

     QDataStream out(&buffer);
     out << QApplication::palette();
Aber irgendwie kommt bei mir in der Datei nichts an . Als ich es noch auf die einfache Art, wie du es oben schon hingeschrieben hast gemacht habe ging es einwandfrei, also kann es nicht daran liegen dass der Code in dem in den TextStream geschrieben wird falsch ist.
Slowmo
Beiträge: 25
Registriert: 21. März 2007 16:02
Kontaktdaten:

Beitrag von Slowmo »

Ich wollte das Thema nur noch einmal nach oben pushen, da das Problem inzwischen akut geworden ist und ich das QByteArray nun wirklich benötige.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Sorry, hab den Thread vergessen.

Wie wäre es mit einen QBuffer::close() ?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Slowmo
Beiträge: 25
Registriert: 21. März 2007 16:02
Kontaktdaten:

Beitrag von Slowmo »

Okay, danke das wars :oops:
Antworten