QFile? [gelöst]
QFile? [gelöst]
Hi,
wie kann ich den mit QFile den gesamten Inhalt einer Datei überschreiben oder ihn löschen?
Da ich jetzt immer Daten habe die ich wenn File vorhanden auslese wenn nicht dann erst reinschreibe.
Aber beim 2ten durchlauf nimmt er immer denn inhalt vom ersten. Und das immer wieder. Was mir ja zeigt das er einfach nicht überschreibt.
Wie funktioniert das denn?
Gruß Qt-nator
wie kann ich den mit QFile den gesamten Inhalt einer Datei überschreiben oder ihn löschen?
Da ich jetzt immer Daten habe die ich wenn File vorhanden auslese wenn nicht dann erst reinschreibe.
Aber beim 2ten durchlauf nimmt er immer denn inhalt vom ersten. Und das immer wieder. Was mir ja zeigt das er einfach nicht überschreibt.
Wie funktioniert das denn?
Gruß Qt-nator
Zuletzt geändert von Qt-nator am 17. Juli 2008 14:01, insgesamt 1-mal geändert.
Sag mal, beschäftigst du dich eigentlich auch nur ansatzweise mit der Doku, bevor du hier fragst? Das kann man doch gar nicht übersehen.
http://doc.trolltech.com/4.4/qiodevice. ... eFlag-enum
http://doc.trolltech.com/4.4/qiodevice. ... eFlag-enum
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Doch eigentlich schon nur bin ich mir jetzt unsicher.
- QIODevice::WriteOnly so hab ichs bisher gemacht.
Klappt nicht.
- QIODevice::Append will ja nicht ans ende des files schreiben
- QIODevice::Truncate da entsteht garnicht erst eine Datei
- QIODevice::Text hier auch nicht.
Also verwende ich das jetzt falsch weil sonst hat mir das jetzt garnicht weitergeholfen.
- QIODevice::WriteOnly so hab ichs bisher gemacht.
Klappt nicht.
- QIODevice::Append will ja nicht ans ende des files schreiben
- QIODevice::Truncate da entsteht garnicht erst eine Datei
- QIODevice::Text hier auch nicht.
Also verwende ich das jetzt falsch weil sonst hat mir das jetzt garnicht weitergeholfen.
Sollte aber. Schlägt denn das öffnen schon fehl? Ansonsten mehr Code, so kann man nicht mehr dazu sagen.Qt-nator hat geschrieben:- QIODevice::WriteOnly so hab ichs bisher gemacht.
Klappt nicht.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Nicht das ich wüste also nicht öffnen.
Code:
Reinschreiben
Auslesen:
Code:
Reinschreiben
Code: Alles auswählen
QFile fFile("./auto_config.dat");
fFile.open(QIODevice::WriteOnly);
fFile.write(baCrypt.toBase64());
fFile.close();
Code: Alles auswählen
fFile.open(QFile::ReadOnly) ;
strLastStart = fFile.readAll();
das kannst du auch gar nicht wissen, weil du es nicht testest.. kontrolliere (immer) den Return-Wert von open(), sonst funktioniert der nachfolgende Code nicht sicher....Nicht das ich wüste
Ohne jetzt genau zu wissen, was du da alles durchprobiert hast: fuer mich klingt das, wie wenn open() funktionieren wuerde, aber baCrypt etwas falsches beinhaltet.. hast du das mittels debugger (oder qDebug()) getestet?Aber beim 2ten durchlauf nimmt er immer denn inhalt vom ersten. Und das immer wieder. Was mir ja zeigt das er einfach nicht überschreibt.
Also open müsste ja Funktioniern da er beim allerersten mal in die Datei reinschreibt.
Auslesen geht auch da er mir immer den Inhalt zurück gibt.
Und ja ich habs mit dem Debuger getestet.
Das immer so. Von Anfang
CurrentTime = x
LastStart = 0
CurrentTime wird in die Datei gespeichert.
Neustart.
CurrentTime = y
LastStart = x
Da schreibt er andscheinend nicht mehr da.
Nochmal neu start:
CurrentTime = z
LastStart = x
Wenn ihr die Zahlen wollt dann mach ich ne Liste fals man so besser verstehen würde.
PS: Ich hab das Gleiche schonmal mit der Registry gemacht da gings dann. Hat immer neue Werte gelesen und geschrieben.
Edit:
Gibts nicht sowas wie clear oder so das man alles was in dem File ist weglöschen kann?
Auslesen geht auch da er mir immer den Inhalt zurück gibt.
Und ja ich habs mit dem Debuger getestet.
Das immer so. Von Anfang
CurrentTime = x
LastStart = 0
CurrentTime wird in die Datei gespeichert.
Neustart.
CurrentTime = y
LastStart = x
Da schreibt er andscheinend nicht mehr da.
Nochmal neu start:
CurrentTime = z
LastStart = x
Wenn ihr die Zahlen wollt dann mach ich ne Liste fals man so besser verstehen würde.
PS: Ich hab das Gleiche schonmal mit der Registry gemacht da gings dann. Hat immer neue Werte gelesen und geschrieben.
Edit:
Gibts nicht sowas wie clear oder so das man alles was in dem File ist weglöschen kann?
So jetzt gehts. War ein dummer fehler von mir. Habs dann gemerkt wo ich mal auf die Komandozeile geschaut hab.
Weil:
Beim ersten mal gings Ja, lag daran das ich nicht in die eine schleife gegangen bin die bei der If-abfrage kommt die nur dann kommt wenn 2 Sachen existieren. Beim 2ten mal gings auch noch, weil die If-Abfrage lesen kann und somit das richtige aus dem 1sten mal reinschreiben liest. Aber wo es dann ans reinschreiben geht klappts nicht weil:
Ich in der If-Abfrage schon mal das File aufgemacht hab aber nicht mehr zugemacht.
Dann beim reinschreiben kamm dann das es eh schon offen ist. Aber halt nur in der Kommandozeile.
Und ich hab die ganze Zeit beim reinschreiben gesucht aber es war in der Schleife naja.
Trotzdem Danke
Gruß Qt-nator
PS: Immer wieder löschen und neuerstellen wär dumm
Weil:
Beim ersten mal gings Ja, lag daran das ich nicht in die eine schleife gegangen bin die bei der If-abfrage kommt die nur dann kommt wenn 2 Sachen existieren. Beim 2ten mal gings auch noch, weil die If-Abfrage lesen kann und somit das richtige aus dem 1sten mal reinschreiben liest. Aber wo es dann ans reinschreiben geht klappts nicht weil:
Ich in der If-Abfrage schon mal das File aufgemacht hab aber nicht mehr zugemacht.
Dann beim reinschreiben kamm dann das es eh schon offen ist. Aber halt nur in der Kommandozeile.
Und ich hab die ganze Zeit beim reinschreiben gesucht aber es war in der Schleife naja.
Trotzdem Danke
Gruß Qt-nator
PS: Immer wieder löschen und neuerstellen wär dumm
Zuletzt geändert von Qt-nator am 17. Juli 2008 14:57, insgesamt 1-mal geändert.
Dafür gibt es Truncate. Ansonsten passt Du perfekt auf meine SignaturQt-nator hat geschrieben:PS: Immer wieder löschen und neuerstellen wär dumm
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.