008
02.08.2007, 13:58 Uhr
~abrissbirne
Gast
|
Mal ganz langsam. Ich drösel das mal auf.
Zitat von FloSoft: |
Hi, sowas macht man rekursiv:
C++: |
CStringArray &Find(CString strDir, CStringArray &strList) [/quote]
Diese Zeile blick ich nicht!
[quote FloSoft] { CFileFind finder; CStringArray strFiles; CString strfound; CString strWildcard; strWildcard = (strDir+"\\*.*"); BOOL bWorking = finder.FindFile(strWildcard); [/quote]
Ok, verstehe ich!
[quote FloSoft] while (bWorking) { bWorking = finder.FindNextFile(); if (finder.IsDirectory()) { if(strList.GetAt(0) == finder.GetFileName()) { strList.RemoveAt(0); return Find(finder.GetFilePath(), strList); } [/quote]
Die Zweite If Schleife, was soll die machen? Wenn Das erste Objekt in strList Array gleich dem aktuellen Dateinamen ist, entferne es aus dem Array und return ???
[quote FloSoft] } else strFiles.Add(finder.GetFilePath()); } finder.Close(); return strFiles; }
|
ungetestet, aber du kannst das ganze dann so in der Art aufrufen:
|
ansonsten füge den Aktuellen Dateipfad in strFiles Array.
Zitat von FloSoft: |
C++: |
CStringArray strList = {"Programme", "National Instruments", ... }; CStringArray strFiles = Find("C:\\", strList);
|
und in strFiles kriegst du alle Dateien in den jeweiligen Ordnern aufgelistet die er durchläuft.
|
Ich dachte ich erhalte in meinem CStringArray Dateinamen und muss diese nicht vorher initialisieren. Oder verstehe ich das hier grad komplett falsch?
Wenn ich den Code mal kompiliere, dann bekomme ich 4 Fehlermeldungen und eine Warnun:
Code: |
error C2552: 'strList' : Initialisierung nicht zusammengesetzter Typen mit Initialisierungsliste ist nicht möglich error C2065: 'Find' : nichtdeklarierter Bezeichner error C2440: 'initializing' : 'int' kann nicht in 'class CStringArray' konvertiert werden Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Ueberladungsaufloesung des Konstrukors ist mehrdeutig error C2373: 'Find' : Neudefinition; unterschiedliche Modifizierer warning C4172: Adresse einer lokalen Variable oder eines temporaeren Wertes wird zurueckgegeben
|
|