[gelöst] Qstring in Textfile schreiben [QT3]

Alles rund um die Programmierung mit Qt
Antworten
eule3
Beiträge: 56
Registriert: 30. Juni 2005 23:13

[gelöst] Qstring in Textfile schreiben [QT3]

Beitrag 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
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag 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:(";
}
klogg
Beiträge: 129
Registriert: 5. September 2005 17:00
Wohnort: Hann. Münden

Beitrag 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
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag 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.
klogg
Beiträge: 129
Registriert: 5. September 2005 17:00
Wohnort: Hann. Münden

Beitrag 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?
eule3
Beiträge: 56
Registriert: 30. Juni 2005 23:13

Beitrag 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
klogg
Beiträge: 129
Registriert: 5. September 2005 17:00
Wohnort: Hann. Münden

Beitrag 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) :wink:

HENNING
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag 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");
}
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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... :roll:
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
eule3
Beiträge: 56
Registriert: 30. Juni 2005 23:13

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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 :-/
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag 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!
Antworten