Delphi-Quellcode:
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;
Beispielaufruf:
showmessage(inttostr(countfilesinFolder('c:\', '*.dat');
[Edit]Kommentare im Quelltext hinzugefügt zum besseren Verständnis[/Edit]