Seite 1 von 1

Logfile ..

Verfasst: 2. April 2010 12:23
von fjulian79
Hi ..

Ich muss in meiner Applikation Daten die über die Serielle Schnitstelle kommen mitloggen und in einem File zur späteren Auswertung speichern. Zu dem Zweck würde ich gerne zur Laufzeit des Programms den Speicherort des Logfiles angeben und zu einem vom User bestimbaren zeitpunkt zum loggen beginnen.

Dazu hab ich mir mal folgendes überlegt ..

In der Klassendefinition lege ich mir einen Zeiger auf ein QFile und einen Filename an:

Code: Alles auswählen

...
private:
QFile         logfile;
QString     logfile_name;
...
in einem Slot der von einem Button ausgelöst wird gebe ich den Pfad an und weise dem QFile Zeiger einen wert zu:

Code: Alles auswählen

myapp::logfile_name_selection(){
     logfile_name = QFileDialog::getSaveFileName( ... );
     logfile = new QFile(logfile_name);
}
will ich dan die datei öffen bzw was reinschreiben wird die datei zwar erstellt, aber es steht nie was drinn !?

Code: Alles auswählen

...
logfile->open();
logfile->write("Hallo Welt");
wo liegt da der fehler ?

ps. sorry wenns echt banal is, aber ich hab wenig erfahrung mit QT ;-)

lg J.

Verfasst: 2. April 2010 12:44
von TSS
Wenn

Code: Alles auswählen

logfile->write("Hallo Welt"); 
den Wert -1 zurückgibt, dann ist ein Fehler aufgetreten. Könnte in deinem Fall daran liegen, dass du nicht angibst, wie die Datei geöffnet werden soll. Also z.B.

Code: Alles auswählen

logfile->open(QFile::ReadWrite); 

Verfasst: 3. April 2010 08:11
von fjulian79
in meinem post sind die argumente von logfile.open() unter den tisch gefallen .. sorry ..

inzwischen hab ich rausgefunden das das in der datei erst nach logfile.close() was zu finden ist .. kann es sein das die QFile klasse alles was ich in die datei schreiben will buffert und erst beim schließen wirklich in die datei schreibt ?

lg J.

Verfasst: 3. April 2010 10:08
von Christian81
Das kann nicht nur sein das ist bei allen Datei I/O-Operationen von Windows oder Linux so. Aber die Doku zu QFile::open() zeigt ja wie man dies unterbinden kann.

Verfasst: 4. April 2010 14:52
von hakaishi
Hi,
ich bin mir nicht sicher, aber müsste es nicht mit bool QFile::flush () auch funktionieren in die Datei zu schreiben, ohne sie schließen zu müssen?

Gruß, Hakaishi