QFile? [gelöst]

Verschiedenes zu Qt
Antworten
Qt-nator
Beiträge: 153
Registriert: 18. Dezember 2007 10:31

QFile? [gelöst]

Beitrag von Qt-nator »

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
Zuletzt geändert von Qt-nator am 17. Juli 2008 14:01, insgesamt 1-mal geändert.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

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
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.
Qt-nator
Beiträge: 153
Registriert: 18. Dezember 2007 10:31

Beitrag von Qt-nator »

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.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Nachdem du die restlichen Möglichkeiten hier gleich mal ausgelassen hast, empfehle ich dir die Doku nocheinmal durchzulesen. Vielleicht gibt es ja etwas das für deinen Fall besser passt...
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Qt-nator hat geschrieben:- QIODevice::WriteOnly so hab ichs bisher gemacht.

Klappt nicht.
Sollte aber. Schlägt denn das öffnen schon fehl? Ansonsten mehr Code, so kann man nicht mehr dazu sagen.
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.
Qt-nator
Beiträge: 153
Registriert: 18. Dezember 2007 10:31

Beitrag von Qt-nator »

Nicht das ich wüste also nicht öffnen.

Code:

Reinschreiben

Code: Alles auswählen

QFile fFile("./auto_config.dat");

  fFile.open(QIODevice::WriteOnly);

  fFile.write(baCrypt.toBase64());
     
  fFile.close();

Auslesen:

Code: Alles auswählen


   fFile.open(QFile::ReadOnly) ;
  
   strLastStart = fFile.readAll();

solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Nicht das ich wüste
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....
Aber beim 2ten durchlauf nimmt er immer denn inhalt vom ersten. Und das immer wieder. Was mir ja zeigt das er einfach nicht überschreibt.
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?
Qt-nator
Beiträge: 153
Registriert: 18. Dezember 2007 10:31

Beitrag von Qt-nator »

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?
chrootdev
Beiträge: 70
Registriert: 18. April 2008 17:52

Beitrag von chrootdev »

Datei löschen und neu anlegen?
Qt-nator
Beiträge: 153
Registriert: 18. Dezember 2007 10:31

Beitrag von Qt-nator »

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
Zuletzt geändert von Qt-nator am 17. Juli 2008 14:57, insgesamt 1-mal geändert.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Qt-nator hat geschrieben:PS: Immer wieder löschen und neuerstellen wär dumm
Dafür gibt es Truncate. Ansonsten passt Du perfekt auf meine Signatur :-)
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.
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Ich in der If-Schleife schon mal das File aufgemacht hab aber nicht mehr zugemacht.
1. ein einfache Ueberpruefung oder ein Q_ASSERT(fFile.open(QIODevice::WriteOnly)); haette den Fehler sofort gezeigt..
2. "If" ist keine Schleife...
Antworten