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
QFile und QTextstream in mehreren Funktionen aufrufen
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.
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.