Programmabbruch beim Auslesen von Verzeichnissen



  • Villeicht bin ich auch grad einfach nur zu blind, aber volgender code verursacht immer die Fehlermeldung

    This application has requested the Runtime to terminate it in an unusual way.
    Please contact the application's support team for more information.

    string find_file( string sPath, string sFileName )
    {
    	HANDLE fHandle;
    	WIN32_FIND_DATA wfd;
    	string workPath, TempPath, result;
    
    	workPath = sPath;
    	TempPath = sPath;
    	workPath.append( "\\*" );
    
    	fHandle = FindFirstFile( workPath.c_str(), &wfd );
    	cout << "I'm in: " << TempPath << endl;
    	do
    	{
        	// Eintrag nur behandeln, wenn es nicht . oder .. ist (werden nur bei Unterverzeichnissen mit zurückgeliefert)
        	// hier könnte man z.B. auch mit lstrcmp auf . und .. vergleichen, was allerdings nicht ganz so effizient ist
        	if (!( (wfd.cFileName[0]=='.') && ( (wfd.cFileName[1]=='.' && wfd.cFileName[2]==0) || wfd.cFileName[1]==0 ) ))
        	{
            	if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
            	{
    				// Wenn du ein Verzeichnis findest gehe rekursiv auch dieses durch
    				// Sollte einer der rekursiven Aufrufe die Datei finden so gib den Pfad zurück
    				workPath = TempPath;
    				workPath.append( "\\" );
    				workPath.append( wfd.cFileName );
    				result = find_file( workPath, sFileName );
                	if ( !result.empty( ) )
                		return result;
            	}
            	else
            	{
    				// Wenn du die Datei findest, gib den Pfad zurück
    				cout << ">>\t\t" << wfd.cFileName << endl;
                	if ( !sFileName.compare( wfd.cFileName ) )
                		return sPath;
            	}
        	}
    	}
    	while ( FindNextFile( fHandle,&wfd ) );
    	FindClose( fHandle );
    
    // Wenn du nichts findest gib null zurück
    return NULL;
    }
    

    Ich hab das gefühl der letzte aufruf beendet mit return alle laufenden aufrufe ??!!??

    Hier nochmaql ne komplette Ausgabe des Programms

    C:\Pfad zum Tool\>Projekt1 -R "C:\Dokumente und Einstellungen" config.tab
    I'm in: C:\Dokumente und Einstellungen
    I'm in: C:\Dokumente und Einstellungen\a6283
    I'm in: C:\Dokumente und Einstellungen\a6283\Anwendungsdaten

    > desktop.ini
    I'm in: C:\Dokumente und Einstellungen\a6283\Anwendungsdaten\Microsoft
    I'm in: C:\Dokumente und Einstellungen\a6283\Anwendungsdaten\Microsoft\Credentials
    I'm in: C:\Dokumente und Einstellungen\a6283\Anwendungsdaten\Microsoft\Credentials\S-1-5-21-3190323292-537000087-2996414867-56190

    This application has requested the Runtime to terminate it in an unusual way.
    Please contact the application's support team for more information.

    PS: Ich hoffe ich bin hier richtig, andernfalls: Tut eure Pflicht, MODs 😉



  • Es liegt daran, dass Du am Ende NULL zurück gibst.
    Ändere es zu

    return "";
    

    und es läuft.



  • ja super, thx ^^

    aberfür son fehler könnt ich mich schon wieder hauen *lol*


Log in to reply