QFile und QTextstream in mehreren Funktionen aufrufen

Alles rund um die Programmierung mit Qt
Antworten
darkshine
Beiträge: 102
Registriert: 20. August 2010 11:39

QFile und QTextstream in mehreren Funktionen aufrufen

Beitrag von darkshine »

Guten Morgen Qt-Gemeinde,

ich möchte für mein Programm gerne ein Logfile erstellen, in dem ich alle möglichen Informationen speicher.

Klassisch aus dem Beispiel

QFile file("out.txt");
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
return;

QTextStream out(&file);
out << "The magic number is: " << 49 << "\n";

Ich wollte "out" jetzt in mehreren Funktionen meiner Klasse nutzen.
Dafür habe ich habe ich QTextstream out in *.h geschrieben und dann out.setDevice(&file) genutzt. Beim Kompilieren gibt es auch keine Probleme aber zur Laufzeit stürzt es mir immer ab mit Fehlern 0xC0000005: Zugriffsverletzung beim Lesen an Position 0xf818ce04.

Was mache ich da falsch? Gibt es eine bessere Lösung für ein Log-File?

Vielen Dank
saar
Beiträge: 11
Registriert: 3. Januar 2011 14:15

Beitrag von saar »

Hallo,

schau mal unter http://libqxt.bitbucket.org/doc/tip/qxtlogger.html nach. Diese Klasse sollte für Deine Anwendung geeignet sein.

Zu Deinem Code (nur eine Vermutung, da kein vollständiger Code vorliegt):
Die Lebenszeit Deines file Objekts ist abgelaufen. file wird auf dem Stack einer Funktion/Konstruktor angelegt. Auch wenn Du die Referenz auf file in ein globales Objekt weiterleitest, ist das Objekt selbst am Ende der Funktion nicht mehr "vorhanden" und somit liefert ein späterer Zugriff darauf (über die Referenz) den beschriebenen Fehler.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Ja, einen Debugger, und der sagt dir auch warum dir dein Progrämmchen abstürzt.
Antworten