Seite 1 von 1
Wie setze ich einen QBuffer ein
Verfasst: 6. Juni 2007 14:59
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.
Verfasst: 6. Juni 2007 15:13
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();
Verfasst: 6. Juni 2007 15:17
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.
Verfasst: 6. Juni 2007 15:22
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
Verfasst: 6. Juni 2007 17:45
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.
Verfasst: 9. Juni 2007 15:02
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.
Verfasst: 9. Juni 2007 15:34
von Christian81
Sorry, hab den Thread vergessen.
Wie wäre es mit einen QBuffer::close() ?
Verfasst: 9. Juni 2007 20:02
von Slowmo
Okay, danke das wars
