Aşağıda vereceğim fonksiyon çok güzel belirliten alanı belirtilen kritere göre listeliyor.İşine yarayan muhakkak olur diye ekliyorum.
Benim bu fonksiyona eklemek istediğim örneğin tüm exeleri taratıyorken boyutu 500 mb dan büyük olanları almamak yada boyuy 500 mb dan küçük olanları almak.
Bunun için nasıl birşey yapabiliriz ?
Güzel bir antivirüs yazmaya çalışıyorum , en azından şimdilik çalıştırılan program ne yapıyor nerelerden ne alıyor bunu yapıyorum
Kod: Tümünü seç
function DosyaListele(KlasorAdi:String;const Liste:TStrings;const Kriter:String='*.*'):Integer;
procedure DosyaTara(const Yol:String);
var Ara:TSearchRec;
begin
if FindFirst(Yol+Kriter,faAnyFile,Ara)=0 then repeat
if Ara.Attr and faDirectory = 0 then
Liste.Add(Yol+Ara.Name);
until FindNext(Ara)<>0;
FindClose(Ara);
if FindFirst(Yol+'*.*',faDirectory,Ara)=0 then repeat //daha alt klasörleri tara
if (Ara.Name<>'.') and (Ara.Name<>'..') and (Ara.Attr and faDirectory = faDirectory) then
DosyaTara(Yol+Ara.Name+'\');
until FindNext(Ara)<>0;
FindClose(Ara);
end;
begin
Liste.Clear;
if (KlasorAdi<>'') and (KlasorAdi[Length(KlasorAdi)]<>'\') then KlasorAdi:=KlasorAdi+'\';
DosyaTara(KlasorAdi);
Result:=Liste.Count;
end;