CFile try/catch
-
Guten Abend,
laut MSN soll man die Arbeit mit dem CFile-Objekt in einen try-catch-Block packen.
Folgende Realisierung liefert aber Fehler, sowohl wenn die Datei in 'strQuelle' vorhanden ist
oder auch nicht vorhanden ist. Es meldet sich die MS Visual C++ Debug Library und erst dann
die eigene Fehlermeldung. Eigentlich sollte sich nur die eigene Meldung zeigen?????CFile cf; CString strDatei; // Fehlerbehandlung zur Dateiausnahme. try { // Datei öffnen. cf.Open(strQuelle, CFile::modeRead); // DateiLänge für den temp. Puffer bestimmen. int intFileLength = cf.GetLength(); // Temp. Puffer anlegen. char * buffer = new char[intFileLength]; // Datei in den temp. Puffer einlesen. cf.Read(buffer, intFileLength); // Puffer abschliessen. buffer[intFileLength] = 0; // Puffer an CString übergeben. strDatei = buffer; // Den temp. Puffer wieder löschen. delete[] buffer; } catch(CFileException * e) { if ( e -> m_cause == CFileException::fileNotFound) { AfxMessageBox("Die Datei 'quelldaten.txt' konnte nicht geöffnet werden."); e -> Delete(); } }
Was ist zu tun?
Manuela
-
Manuela schrieb:
char * buffer = new char[intFileLength]; // ... buffer[intFileLength] = 0;
Der Puffer ist zu klein! Es muesste
char * buffer = new char[intFileLength+1]; // +1
heissen.
-
zu OpenFlags aus der MSDN
MSDN schrieb:
One access permission and one share option are required
Du hast aber nur ein Flag in deiner Open-Methode übergeben. Daher rührt der Fehler, denke ich.