Dateientyp auf Platte suchen
-
Hallo,
zunächst hoffe ich mal, nicht im falschen Forum gelandet zu sein

In meinem aktuellen Übungsprojekt mit den MFC möchte ich auf meinem PC
alle Dateien vom Typ mp3 auflisten lassen.Hierzu habe ich eine kleine Funktion, die rekursiv suchen soll.
Es werden zwar Dateien vom Typ mp3 gefunden, jedoch nur in der ersten
Suchinstanz (C:\).Vielleicht seh ich den Wald vor lauter Bäumen nicht, aber ich stehe echt
aufm Schlauch :pHier mal etwas Code:
int CmprDlg::ladefiles(CString nextdir) { CString curdir = nextdir; CString appname; CString ftpfilename; CString winfilename; CFileFind ftpFind; BOOL bContinue = ftpFind.FindFile(curdir + "\\*.mp3"); while(bContinue > 0) { bContinue = ftpFind.FindNextFile(); appname = ftpFind.GetFileName(); if (appname == "." || appname == "..") { } else { if (ftpFind.IsDirectory() != 0) { //suche weiter wenn Directory gefunden (Rekursion) nextdir = curdir + "\\" + appname; ladefiles(nextdir); } else { //Pfad und Dateiname anzeigen MessageBox(appname,ftpFind.GetFilePath()); } } } ftpFind.Close(); return 1; } void CmprDlg::OnBnClickedButton4() { ladefiles("c:\\"); }
-
Ist der Fehler denn so trivial?

-
Floader schrieb:
Ist der Fehler denn so trivial?

Nein, nur ziemlich häufig. Vielleicht gibt es sogar etwas darüber in den FAQ.
Dein Filter *.mp3 liefert dir nur die Unterverzeichnisse, die auf .mp3 enden (das werden wohl eher wenige sein).
Du kannst nicht in einem Suchlauf alle Unterverzeichnisse, aber nur bestimmte Dateien suchen.
-
Zugegeben ich hab noch nicht viel mit C++ gemacht. In den FAQ habe ich jetzt
mal gesucht, aber nicht das Passende (oder etwas das mir hier hilft) gefunden.Warum ist es denn so nicht plausibel? Ich rufe doch aus der Funktion, sobald
es ein Ordner ist, den Suchlauf neu mit dem Ordner als erweitertem Suchpfad auf.grüße
Floader
-
Also nochmal: *.mp3 sucht nur nach Dateien und Verzeichnissen mit der Endung mp3. Andere Verzeichnisse die nicht die Endung mp3 haben werden nicht von Deiner Suche erfasst.
Also nach . suchen und selber die rausfiltern die eine mp3 Endung haben.