Rekursiv Directories ausgeben
-
Hallo,
das folgende läuft ohne SubSubdirectories problemlos: alle Subdriectories werden aufgelistet. Sobald ein Subdir aber weitere enthält kriege ich ein Zugriffsverletzung. Kann mir jemand helfen? Danke im voraus.
robi1806
Spot the mistakes:
void __fastcall CopyThread::Check4Dirs(AnsiString Dir2Check) { struct dirent* dentry; DIR* dirtoscan = opendir(Dir2Check.c_str()); while((dentry=readdir(dirtoscan))!=NULL) { if ((strcmp(dentry->d_name, ".")!=0) && (strcmp(dentry->d_name, "..")!=0)) { if (ExtractFileExt(dentry->d_name)=="") //is subdirectory { OutText=dentry->d_name; // im Thread definiert Synchronize(StatusTextOut); // schreibt in StatusWindow des anderen Threads Check4Dirs(dentry->d_name); } } } closedir(dirtoscan); }
-
1. Ich glaube der rekursive Aufruf stört das DIR !!!
(Ist bei FindFirst so)2. Du solltest nicht Ext=="" testen! Es gibt Ordner MIT Extenmsion und Dateien ohne
Nimm doch FindFirst / FindNext / FindClose.
Speicher die gelesenen Subdirs in einer (String-) Liste
Rekursier erst nach FindClose in gespeicherte Ordner!
Das klappt ohne Fehler