Dateien in einem Verzeichnis zählen
-
Hallo,
ich möchte die Anzahl der Dateien in einem Ordner auslesen z.B Windows\\TMP
Kann mir jemand weiterhelfen???Danke
-
Hallo
Siehe die Funktionen FindFirst und FindNext in der BCB-Hilfe un über die Suchfunktion hier im Forum.
bis bald
akari
-
pack nen zähler rein und mach statt files->Add eben ein i++;
TStringList* filepaths(UnicodeString basepath,bool subfolder) { TStringList* paths= new TStringList(); TStringList* files= new TStringList(); paths->Clear(); files->Clear(); paths->Add(basepath+"/"); HANDLE fHandle; WIN32_FIND_DATA wfd; while(paths->Count>0)//solange es pfade gibt wird wiederholt { fHandle=FindFirstFile((AnsiString(paths->Strings[0]) +"*").c_str(),&wfd); do { // Eintrag nur behandeln, wenn es nicht . oder .. ist (werden nur bei Unterverzeichnissen mit zurückgeliefert) // hier könnte man z.B. auch mit lstrcmp auf . und .. vergleichen, was allerdings nicht ganz so effizient ist if (!( (wfd.cFileName[0]=='.') && ( (wfd.cFileName[1]=='.' && wfd.cFileName[2]==0) || wfd.cFileName[1]==0 ) )) { if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if (subfolder==true) { paths->Insert(1,paths->Strings[0]+wfd.cFileName+"/"); // Datei ist keine, sondern ein Verzeichnis... //es wird der Pfad in die Liste paths eingefügt } } else { files->Add(paths->Strings[0]+wfd.cFileName); //alle dateien werden mit pfad in die liste gespeichert } } } while (FindNextFile(fHandle,&wfd));//solage es in dem pfad noch eine datei gibt paths->Delete(0);//der erste in der paths liste wird gelöscht, damit der nächste auf 0 liegt } FindClose(fHandle); delete paths; return files; }
-
sieht so aus als würdest du nicht auf rekursive Funktionen stehen
und deswegen die TStingList "missbrauchst"