CStdioFile::ReadString funzt unter release nicht
-
Hallo,
ich habe da ein Problem in der Releaseversion mit der Memberfunktion ReadString von StdioFile. Wenn ich das ganze im Debugmodus laufen lasse funzt es einwandfrei nur im Release Modus stürzt es mir sofort ab mit der folgenden Fehlermeldung:
LVTest hat in Kernel32.DLL einen Fehler verursacht.
LVTest wird geschlossen.woran kann das liegen ?
Auf eine baldige Hilfe wär ich euch sehr dankbar.
MfG
-
Mit höchster Wahrscheinlichkeit ne uninitialisierte Variable oder fehlerhafter Code.
-
Hallo Danke erstmal,
aber warum läuft das ganze dann in der Debugversion dadurch kann ich mir nicht vorstellen das der code fehlerhaft ist oder ?
Muss ich auch CString Variablen initialisieren ?
-
aber warum läuft das ganze dann in der Debugversion
Die Debug-Version setzt uninitialisierte Varíablen automatisch auf 0.
-
Muss ich generell alle Variablen initialisieren egal von welchem Typ ?
Wenn er sie doch in der Release Version automatisch auf 0 setzt dann ist doch die variable initialisiert oder sehe ich das falsch ?
-
Hier mal ein Auszug aus meinem Programm
...
CString gesp_tag;
CStdioFile output, input;
Date_temp = m_strPathTemp+"\\tempday.dat";
output.Open(Date_temp, CFile::modeRead); // Datei des gesp. Datums öffnen
output.ReadString(gesp_tag); // liest letztes gespeichertes Datum ein
output.Close();
...
-
Dieser Code verursacht den Absturz NICHT.
[edit](ausser, die Datei existiert nicht)[ Dieser Beitrag wurde am 30.06.2003 um 16:43 Uhr von RenéG editiert. ]
-
Wenn ich aber (siehe unten) eine Messagebox einbaue dann funzt es bis dahin
...
CString gesp_tag;
CStdioFile output, input;
Date_temp = m_strPathTemp+"\\tempday.dat";
output.Open(Date_temp, CFile::modeRead); // Datei des gesp. Datums öffnen// Hier baue ich die M.Box ein und bis hierhin funzt es
output.ReadString(gesp_tag); // Fehler !!!
// baue ich die M.Box hier ein erfolgt der Absturz.
output.Close();
...
-
Schon mal versucht die Ausnahmen (CFileException) abzufangen? Vielleicht wirft ReadString aus irgendeinem Grund eine Ausnahme.
[ Dieser Beitrag wurde am 30.06.2003 um 16:53 Uhr von Harrison Bergeron editiert. ]
-
Original erstellt von Harrison Bergeron:
Schon mal versucht die Ausnahmen (CFileException) abzufangen? Vielleicht wirft ReadString aus irgendeinem Grund eine Ausnahme.
-
Nein habe ich noch nicht mit diese Klasse habe ich noch nicht gearbeitet kannst du mir vieleicht ein beispielcode geben
danke
-
TRY { CString gesp_tag; CStdioFile output, input; Date_temp = m_strPathTemp+"\\tempday.dat"; output.Open(Date_temp, CFile::modeRead); // Datei des gesp. Datums öffnen output.ReadString(gesp_tag); // liest letztes gespeichertes Datum ein output.Close(); } CATCH (CFileException, e) { e->ReportError(); } END_TRY[ Dieser Beitrag wurde am 30.06.2003 um 16:55 Uhr von Harrison Bergeron editiert. ]
-
Oder aber, man kopiert den Code aus der MSDN, der abprüft, ob Open überhaupt erfolgreich war:
if( output.Open(Date_temp, CFile::modeRead)) // Datei des gesp. Datums öffnen output.ReadString(gesp_tag); // liest letztes gespeichertes Datum ein
-
Danke erstmal,
Habe es soeben ausprobiert aber die MessageBox laut der MSDN-Doku mit der Fehlerdokumentierung erscheint nicht das Programm stürtzt einfach nur ab.
-
Ja stimmt die Datei wird nicht geöffnet anhand der MessageBox (siehe unten) die ich eingebaut habe konnte ich sie im Ablauf nicht sehen.
CString gesp_tag;
CStdioFile output, input;
Date_temp = m_strPathTemp+"\\tempday.dat";
if( output.Open(Date_temp, CFile::modeRead)) // Datei des gesp. Datums öffnen
MessageBox("Hallo", "Info"); // Diese MessageBox erscheint nicht
output.ReadString(gesp_tag); // liest letztes gespeichertes Datum einAber woran kann das liegen im debug modus läuft es ja immerhin ?
-
für den try/catch-Code müssen beim Compiler C++-Exceptions eingeschaltet sein!
-
In welchem Menü muss ich diese Einstellung tätigen?
-
Original erstellt von <Mike02>:
In welchem Menü muss ich diese Einstellung tätigen?In der VisualC++ IDE:
Projekteinstellungen->C/C++->Programmiersprache C++->Ausnahmebehandlung aktivierenAusnahmebehandlung ist meines Wissens eine Voreinstellung, ist also bei einem neuen Projekt automatisch mit drin.