Bir dizindeki tüm dosyaları listelemek(alt dizinler dahil)

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Bir dizindeki tüm dosyaları listelemek(alt dizinler dahil)

Mesaj gönderen NewMember »

Arkadaşlar merhaba forumda ve googlede arama yaptım ama bulamadım.
Yapmak istediğim şu.Bir dizin içindeki JPG dosyalarını listeletmek istiiyorum.Aslında nihai dizin içindeki dosyaları listeletiyorum ancak ana dizin içindeki bütün dosyaları listeletmek istiyoum.
Örnek ermek gerekirse:

Ana dizin:
C:\Klasor1
Bu klasörün içinde jpeg dosyaları var.

Sonra bu klasörün içinde

C:\Klasor1\Klasor2
C:\Klasor1\Klasor3
C:\Klasor1\Klasor4
C:\Klasor1\Klasor5
C:\Klasor1\Klasor6
..........................
..........................
var.Ve bu her klasörün içinde de JPG dosyaları var.

Bu klasörlerin içinde gene JPG barındıran klasörler olabilir.

Benim yapmak istediğim bu ana klasörün tüm alt klasörleride dahil olmak üzere içinde ne kadar JPG dosyası var ise hepsini dosya yolları ile bir memo içine listelemek istiyorum.

Tek tek kontrol ederek her klasör için yap diyebilirsiniz belki ama bu dinamik bir yapı ve an klasörün içinde ne kadar alt klasör olacağı belli değil.

Windowsta arama yapıyoruz nasıl *.JPG ile bize aradığımız dizinin altına nerede ne varsa çıkarıyor.Yapmak istediğimde onun gibi bir şey.
Yardımlarınızı bekliyorum.
Şimdiden teşekküler...
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Bir dizindeki tüm dosyaları listelemek(alt dizinler dahi

Mesaj gönderen sabanakman »

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;

procedure TForm1.Button1Click(Sender: TObject);
begin
  DosyaListele('c:\KlasorAd',ListBox1.Items,'*.jpg');
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Re: Bir dizindeki tüm dosyaları listelemek(alt dizinler dahi

Mesaj gönderen NewMember »

Çok teşekkürler....
Cevapla