function CountFilesInFolder(AFolder: String; AMask: String): Integer;
var tmp1: TSearchRec; //Record in den FindFirst/Findnext die Daten schreibt
ergebnis: Integer; //zur Zwischenspeicherung von Findfirst und FindNext
begin
result := 0;
if (AFolder <> '') then //wenn kein Pfad angegeben wurde könn wir gleich abbrechen...
begin
if AFolder[length(AFolder)] <> '\' then AFolder := AFolder + '\'; //wenn AFolder keinen '\' am Ende hat fügen wir einen an weil "c:\mypfad" + "*.*" schief gehen würde
ergebnis := FindFirst(AFolder + AMask, faArchive + faReadOnly + faHidden + faSysFile, tmp1); //erste Datei aus Verzeichnis holen. Ergebnis <> 0 = nix gefunden
while ergebnis = 0 do //solange wie Dateien gefunden wurden weitersuchen
begin
Inc(result); //anzahl der gefundenen Dateien erhöhen
ergebnis := FindNext(tmp1); //nächste Datei suchen
while ((tmp1.Name = '.') or (tmp1.Name = '..')) and (ergebnis <> 0) do ergebnis := FindNext(tmp1); //Filtert "." und ".." raus. Eigentlich unnötig weil wir Ordner nicht berücksichtigen, aber bleibt drin falls wir die Attribute mal wieder um "faDirectory" erweitern
end;
FindClose(tmp1); //Am Ende der Auflistung sollten wir das SearchRec wieder freigeben
end;
end;
Beispiel :
procedure TForm1.Button1Click(Sender: TObject);
begin
// HIER KANN DER PFAD UND DIE DATEI ANGEGEBEN WERDEN, FÜR ALLE DATEIEN [*.*] angeben
showmessage(inttostr(countfilesinFolder('C:\Windows', '*.dll')));
end;
Keine Kommentare:
Kommentar veröffentlichen