CStdioFile::ReadString funzt unter release nicht
-
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.