Error beim suchen in einer Datei



  • Also ich hab folgendes Problem:
    An eine Funktion find wird ein CString übergeben und die soll in meiner Datei nach dem CString suchen.
    Doch in der Funktion bricht er, durch meinen try-Block ab und liefert mir "ERROR!".
    Scgaut euch plz mal den folgenden COde an und die Fuktion find:

    //In der Hauptdatei, bei Klick auf "ShowInfo", das eine Info zu einem Ausgewähltem ListenElement zeigen soll
    
    void CArchivarDlg::OnViewinfo() 
    {
    	HTREEITEM hItem=m_dir.GetSelectedItem();
    	CInfoMovie dlg;
    	int iCatchMsg;
    	CString fullpath=m_dir.GetFullPath(hItem);
    
    	try{
    	if (hItem){
    		MessageBox("hItem==true");
            if(find(fullpath))
    		{
    			MessageBox("find(fullpath)==true");
    			//Code zur Variableneinlesung später hier hin
    			dlg=load(fullpath,dlg);
    		}
    		else
    		{
    			MessageBox("find(fullpath)==false");
    			iCatchMsg=MessageBox("No Info for this Item detected. Create a new one?","Create an Info",MB_YESNO);
    			if(iCatchMsg)
    			{
    				MessageBox(fullpath,"Path:");
    				dlg.m_strPath=fullpath;//Problem: strPath is const char* und kann nicht fehlerfrei in CString umgewandelt werden
    				//strcpy(dlg.m_strPath,m_dir.GetFullPath(hItem));
    				MessageBox(dlg.m_strPath,"Path in dlg");
    				dlg.DoModal();
    			}
    			else if(!iCatchMsg) {}
    		}
    	}
    
        else
            MessageBox ("No Item Selected...");
    	}
    	catch(...)
    	{
    		MessageBox("ERROR!");
    		MessageBox(fullpath,"Fullpath:");
    	}
    }
    
    //Das hier ist in MovieInfo.cpp
    bool find(CString path)
    {
    	bool temp;
    	char* readpath="";
    	int fsk=0;
    	int howmuch=0;
    	char* name="";
    	char* format="";
    	char* genre="";
    	char* descr="";
    	ifstream in("data.mio");
    	if(!in){
    		MessageBox("Die Datei konnte nicht zum lesen geoeffnet werden!","Error",IDOK||MB_ICONSTOP);
    		return false;
    	}
    	do {
    		in>>readpath;
    		in>>fsk;
    		in>>howmuch;
    		in.getline(name,79,79);
    		in.getline(format,79,79);
    		in.getline(genre,79,79);
    		in.getline(descr,79,79);
    	}while((readpath!=path)&&(!in.eof()));
    
    	in.close();
    
    	if(temp)
    		return true;
    	else return false;
    }
    


  • was hat beim debuggen hitem fürn wert? und ich würd auch imma mit EOF aufs ende der datei prüfen, weil das auch ne fehlerquelle ist..



  • Ähm also inzwischen hab ich das Problem gelöst, nämlich er mag anscheinend keine char* auslesen, deswegen hab ich halt jede Variable die ausgelesen wird auf nen Maximalwert gesetzt (sprich nen char Array draus gemacht 😉 ).
    Ber jetzt hab ich ein zweites Problem: Wie kann man CStrings in char Arrays umwandeln?
    Weil ich arbeite ja mit der std IO und da kann man keine CStrings in eine Datei schreiben ohne dass dabei Fehler auftreten.
    "Test" wird da zu "004323CCO".
    Kann man da eine Stringfuktion verwenden?



  • also ich würd mir in einer forschleife (dauer mit strName.GetLength()) jedes einzelne zeichen des CStrings mit GetAt(index) holen und ins chararray schreiben..ist aber nicht so richtig schnell..



  • Naja bei dem Prog kommts nich so auf Geschwindigkeit an 😉
    Danke!


Log in to reply