this slowpoke moves

Get File count in Folder

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

Beliebte Posts

Translate