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. 😃


Anmelden zum Antworten