Problem beim Auslesen vom Ordner und Unterordnern plus Dateien
-
Hallo erstmal,
mein erster Beitrag also nicht gleich so hart mit mir ins Gericht gehenIch hab folgendes Problem mit meinem Code:
void __fastcall Tfrm_Main::listeerstellen(AnsiString Pfad) { TSearchRec SR; if(FindFirst(Pfad+"\\*",faAnyFile,SR) == 0){ if((SR.Attr == faDirectory) && (SR.Name[1] != '.')) listeerstellen(Pfad + "\\" + SR.Name); else{//else Datei_eintragen(Pfad+"\\"+SR.Name); while(FindNext(SR) == 0){//while if((SR.Attr == faDirectory) && (SR.Name != ".") && (SR.Name != "..")){ frm_Main->lb_Ordner->Items->Add(Pfad + "\\" + SR.Name); listeerstellen(Pfad + "\\" + SR.Name); } else Datei_eintragen(Pfad+"\\"+SR.Name); }//while }//else FindClose(SR); } }
Ich benutze im Moment diese Code dafür. Es klappt auch recht gut jedoch gibt es manche Ordner nicht als Ordner erkannt werden. Ich weiß nicht ob das en Fehler im Code ist oder diese Ordner ein andere Attribut als "faDirectory" benutzen.
Kann mir jemand helfen?
Ein anderer Code der Funktionietrt und einfach zu verstehen ist würde mir auch helfen.
Mit freundlichen Grüßen
Sponky
-
Sponky schrieb:
jedoch gibt es manche Ordner nicht als Ordner erkannt werden. Ich weiß nicht ob das en Fehler im Code ist oder diese Ordner ein andere Attribut als "faDirectory" benutzen.
Welche Ordner?
-
Hallo
Ja dieser Vergleich prüft exklusiv auf das Verzeichnis-Attribut
SR.Attr == faDirectory
Damit fallen alle Verzeichnisse heraus die zum Beispiel schreibgeschützt oder "archiviert" sind.
Der korrekte Vergleich ist(SR.Attr & faDirectory) == faDirectory
bis bald
akari
-
Danke akari.
Genau daran lags. Vielen Dank