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;
    }
    


  • @blub1991

    sieht so aus als würdest du nicht auf rekursive Funktionen stehen
    und deswegen die TStingList "missbrauchst" 😉


Anmelden zum Antworten