Seite 1 von 1
[gelöst] Qstring in Textfile schreiben [QT3]
Verfasst: 9. Oktober 2005 11:11
von eule3
Hallo
Ich müsste normale Texte in ein einfaches Textfile schreiben.
Jetzt weiß ich nicht ob hier QFile oder QTextStream verwenden soll.
(Als Formatierung benötige ich nur fett; kursiv; rot und unterstrichen)
Die Beispiele die ich bis jetzt gefunden habe sind alle so kompliziert,
vielleicht findet jemand die Zeit mir ein kurzes einfaches Beispiel zu geben.
Oder gibt es da noch eine andere Qt Klasse die für diesen Zweck
besser geeignet ist?
Vielen Dank im voraus
Mit freundlichen Grüßen
Verfasst: 9. Oktober 2005 11:49
von BartSimpson
Du brauchst beides. Das QFile wird an den Stream übergeben. Und denn einfach einschreiben.
z.B.
Code: Alles auswählen
QString Text("Beispiel");
QFile Datei("Text.txt");
if (Datei.open(QFile::WriteOnly | QFile::Truncate))
{
QTextStream Datenstrom(&Datei);
Datenstrom<<Text;
Datenstom.flush();
Datei.close();
}
else
{
qDebug()<<"schreiben ging nicht:(";
}
Verfasst: 9. Oktober 2005 14:56
von klogg
Ich hab in der Dokumentation gesehen,
dass in den Besipielen zu QFile
Code: Alles auswählen
QFile data("output.txt");
data.open(QFile::WriteOnly | QFile::Truncate)
verwendet wird, bei QTextStream aber
Code: Alles auswählen
QFile file("out.txt");
file.open(QIODevice::WriteOnly | QIODevice::Text)
Was ist denn da der Unterschied?
HENNING
Verfasst: 9. Oktober 2005 15:13
von BartSimpson
QFile ist von QIODevice abgeleitet. Also hat QFile::WriteOnly und QIODevice::WriteOnly die selbe Wirkung.
Der Rest:
QIODevice::Truncate If possible, the device is truncated before it is opened. All earlier contents of the device are lost.
QIODevice::Text When reading lines using readLine(), end-of-line terminators are translated to the local encoding.
Verfasst: 9. Oktober 2005 16:18
von klogg
BartSimpson hat geschrieben:QIODevice::Truncate If possible, the device is truncated before it is opened. All earlier contents of the device are lost.
QIODevice::Text When reading lines using readLine(), end-of-line terminators are translated to the local encoding.
OK, das hat dann aber nichts miteinander zu tun...
Also könnte man (bei Bedarf) beide Flags verwenden.
Allersings ergibt sich jetzt folgende Frage:
Wenn durch
QIODevice::Truncate die Datei gelöscht wird
und
QIODevice::Append nötig ist, um hinten dran zu schreiben,
was passiert denn dann, wenn man keins von beiden benutzt?
HENNING
PS: Kannst du mir das mit QIODevice::Text an Hand eines Beispiels erläutern?
Verfasst: 9. Oktober 2005 16:23
von eule3
hallo
Danke für Deine Antwort. Leider gefällt sie meinen
Compiler überhaupt nicht:
error: `WriteOnly' is not a member of type `QFile'
error: `Truncate' is not a member of type `QFile'
error: too few arguments to function `void qDebug(const char*, ...)'
error: `flush' undeclared (first use this function)
Das problem mit WriteOnly bekomme ich dadurch weg:
QFile::IO_WriteOnly
Danach kommt aber folgender Fehler:
error: syntax error before numeric constant
error: `Datenstrom' undeclared (first use this function)
Den Tippfehler bei Datenst(r)om habe ich aber schon
ausgebessert:
Datenstrom<<Text;
Datenstom.flush();
Gibt es noch weitere Vorschläge?
mfg
Verfasst: 9. Oktober 2005 16:30
von klogg
Vielleicht liegt es daran, dass die Tipps für QT4 sind...
Sehe gerade, dass du ja QT3 benutzt.
Damit kenne ich mich leider nicht aus...
(Das hilft dir jetzt bestimmt toll weiter)
HENNING
Verfasst: 9. Oktober 2005 16:33
von BartSimpson
Ups das war für Qt 4
Unter Qt3 sollte es so aussehen:
Code: Alles auswählen
QString Text("Bla bla bla");
QFile Textdatei("datei.txt");
if ( Datei.open( IO_WriteOnly| IO_Truncate ) )
{
QTextStream Textstrom( &Textdatei );
Textstrom<<Text;
Textdatei.close();
qDebug("fertig");
}
else
{
qDebug("ging nicht");
}
Verfasst: 9. Oktober 2005 20:10
von Christian81
Manchmal frage ich mich wirklich wozu es die Qt-Hilfe überhaupt gibt:
Ein Blick nach
http://doc.trolltech.com/3.3/qfile.html#open hätte es innerhalb einer Minute gelöst...

Verfasst: 12. Oktober 2005 07:09
von eule3
>>Manchmal frage ich mich wirklich wozu es die Qt-Hilfe überhaupt gibt
Wie so vieles auf dieser Welt ist die Intelegenz (auch die soziale)
sehr ungleichmässig verteilt. Es ist leider so, du bist klug und ich bin
blöb. Habe ich doch tatsächlich gefragt ob ich QTextStream oder
QFile brauche, dabei brauche ich beides. Mach dir nicht die
Mühe auf diese Mail zu antworten, ich will dich nicht weiter
unterfordern.
Alle anderen ein herzliches Dankeschön für Eure Mühen.
mfg
Verfasst: 12. Oktober 2005 08:14
von Christian81
Ich bin nicht intelligent, ich gebe mir nur Mühe es von allein rauszufinden. Das hast Du ja teilweise auch gemacht - nur leider ist es in diesem Forum gang und gäbe einfach zu fragen ohne sich auch nur einen einzigen Gedanken darüber zu machen :-/
Verfasst: 12. Oktober 2005 09:36
von lepsai
nur leider ist es in diesem Forum gang und gäbe einfach zu fragen ohne sich auch nur einen einzigen Gedanken darüber zu machen
Richtig!