programmabsturtz trotz try-catch
-
moin, ich versuche die autorun.inf einer cd zu lesen, und anschliessend die unter "open" eingetragene datei dieser cd zu öffnen, es funktioniert auch sofern eine cd im laufwerk liegt, die eine autorun.inf hat, ansonsonsten stürtzt mein programm ab.
CString sDatei = "d:\\autorun.inf"; CString s = ""; char cDaten[1024]; // ja, 1024 als puffer für ne autorun.inf ist übertrieben, na und mein rechner hat die ressourcen :-) cDaten[0] = NULL; //Autorun.inf öffnen try { CFile file; file.Open(sDatei,CFile::modeRead, NULL); file.Read(cDaten, 1024); } catch(CFileException *e) { e->Delete(); //Es soll keine Warnung o.ä. ausgegeben werden } if(cDaten[0] != NULL) { s = cDaten; s.MakeLower(); s.Delete(0, s.Find("open=", 0)+5); ///+5, da "open=" mitgelöscht werden soll s = s.Left(s.Find("\r", 0)); sDatei.Format("d:\\%s", s); ShellExecute (NULL, "open", sDatei , "", NULL, SW_SHOWNORMAL); }danke im vorraus
-
Prüf doch den Rückgabewert von CFile::Open. Die Methode gibt FALSE zurück fals was schief ging, und dann führt jeder Leseversuch zum Absturz.
-
s = cDaten;ohne das jetzt genau zu wissen... ich würd spontan sagen das er das nicht mag weil cDaten nicht nullterminiert ist...
-
@newvet
danke, es funktioniert wie gewollt@windalf
ja, ich habe nachdem die datei zu ende ist jede menge müll im string stehen, das interessiert mich in dem Fall aber nicht, da der gesuchte teil davor ist.