SearchPath scheitert



  • Hi@All.

    Ich muss Dateien in einem bestimmten Verzeichnis und deren Untervderzeichnisse auflisten.

    Dazu kahm mir die SearchPath-Funktion sehr gut daher.

    TCHAR Path[MAX_PATH+1] = "C:\\";
    TCHAR File[MAX_PATH+1] = ".bat";
    TCHAR Buffer[MAX_PATH+1];
    LPTSTR lpFilePart[5];
    
    while (SearchPath(Path, File, NULL, MAX_PATH, Buffer, lpFilePart))
    {
    	MessageBox(NULL, Buffer, "Search", MB_OK);
    }
    

    Was hat es mit dem lpFilePart aufsich? wiviele Elemente muss er haben?

    Wie soll ich mit GetLastError überprüfen, was fehlschlägt?

    Danke.



  • Das ist die falsche Funktion... Nimm lieber:
    - FindFirstFile, FindNextFile und FindClose



  • naja, das weiß ich ja ganz nicht.

    ich will nicht alle! dateien eines verzeichnisses, sondern nur die, die eine Zeichenkette insich tragen, nach der gesucht wird.

    unterverzeichnisse sind auch noch zu durchsuchen.

    wie das?



  • - rekursive Funktion bauen
    - FindFirst, FindNext benutzen
    - gefundenes File auf bestimmte Zeichenkette überprüfen
    -> Zeichenkette vorhanden: File listen
    -> Zeichenkette nicht vorhanden: File nicht listen

    Ganz einfach eigentlich. Sollte in 10 Minuten geschrieben sein...



  • na gut!
    aber wofür ist dann dieses SearchPath-vieh??

    danke.



  • Wofür das searchpath ist, kann ich dir nicht sagen.. hab ich noch nie benutzt...
    Hier mal ein Beispiel für die Suchfunktion

    bool Claas::FindFilesRecurse(LPCTSTR pstr) 
    { 
    	CFileFind finder; 
    
    	CString strWildcard(pstr); 
    	strWildcard += _T("\\*.*"); 
    	BOOL bWorking = finder.FindFile(strWildcard); 
    
    	while (bWorking) 
    	{ 
    		bWorking = finder.FindNextFile(); 
    
    		if (finder.IsDots()) 
    			continue;
    
    		if (finder.IsDirectory()) 
    		{ 
    			CString str = finder.GetFilePath(); 
    
    			FindFilesRecurse(str);
    			continue;
    		}
    		CString file = finder.GetFilePath();
    		//Hier was mit dem Path machen...
                    //if(path.Find("bestimmter string") != -1)
                    //oder so..
    	}
    	finder.Close(); 
    	return true;
    


  • SearchPath wird verwendet, um eine Datei zu suchen, die sich entweder im aktuellen oder im Systemverzeichnis befindet.


Anmelden zum Antworten