Dosya Ve Klasör'leri Listelemek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Dosya Ve Klasör'leri Listelemek

Mesaj gönderen Trial_Cooder »

arkadaşlar iyi akşamlar. ben bir klasörün içindeki dosyaları ve diğer klasörleri listelemek istiyorum. buldum kodların hepsi alt klasörleride listeliyor. elinde bununla ilgili kod olan varmı

teşekkürler.
ng
Üye
Mesajlar: 192
Kayıt: 01 Mar 2004 11:49
Konum: Bursa
İletişim:

Mesaj gönderen ng »

Fiellistbox dı galiba adını tam hatırlayamadığım bir bileşen vardı onunla istediğin klasörün içindeki istediğin türdeki dosya va klasörleri listeleyebilirsin sanırım.
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Mesaj gönderen Trial_Cooder »

hayır bileşen var zaten, ben txt'ye listelemek istiyorum.
ng
Üye
Mesajlar: 192
Kayıt: 01 Mar 2004 11:49
Konum: Bursa
İletişim:

Mesaj gönderen ng »

Kod: Tümünü seç

filelistbox1.Directory:='c:\temp';
for say:=0 to filelistbox1.Items.Count-1 do
  memo1.Lines.Add(filelistbox1.Items.Strings[say]);
memo1.Lines.SaveToFile('liste.txt');
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Mesaj gönderen Trial_Cooder »

hayır, benimde aklıma geldi ama işimi görmüyor.
şöyle söyliyim, benim istediğim herşeyi kendi listbox'ım üzerinden yapmak istiyorum. dosyalar ve klasörler listbox'a listelenecek ve ben listbox ile seçtiğim klasördeki alt klasör leri listelicem. yani kısaca herşey manuel olması gerekiyor.
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Mesaj gönderen Battosai »

Senin ilacın bu kodu artık listbox'ına göre ayarlarsın...kod belirtilen klasör içindeki dosya ve alt klasörlerdeki dosyalarda arama yapar...

Kod: Tümünü seç

Procedure FindFiles(const Path, Mask: string; IncludeSubDir: boolean; Out List:TStringList);
var
  FindResult: integer;
  SearchRec : TSearchRec;
begin
  FindResult := FindFirst(Path + Mask, faAnyFile - faDirectory, SearchRec);
  while FindResult = 0 do
  begin
    { do whatever you'd like to do with the files found }
    List.Add(Path + SearchRec.Name);
    FindResult := FindNext(SearchRec);
  end;
  { free memory }
  FindClose(SearchRec);
  if not IncludeSubDir then
    Exit;
  FindResult := FindFirst(Path + '*.*', faDirectory, SearchRec);
  while FindResult = 0 do
  begin
    if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
        FindFiles (Path + SearchRec.Name + '\', Mask, TRUE,List);
    FindResult := FindNext(SearchRec);
  end;
  { free memory }
  FindClose(SearchRec);
end;

//Kullanımı

Var
i:Integer;
liste:TStringList;
begin
    liste:=TStringList.Create;
    FindFiles(GetCurrentDir+'\','*.Dat',False,liste);
    Listbox.Clear;
    Listbox.items.addstrings(liste);
    liste.Free;
end;
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Mesaj gönderen Trial_Cooder »

hayır arama yapmayacağım ve alt klasörler listelenmeyecek
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Mesaj gönderen Battosai »

iyide sen bu kodu hiç denedin mi? Zaten senin istediğini yapıyor...orda IncludeSubDir: boolean parametresini false yaparsın alt klasörler listelenmez arama denilen şey nedir;dosyaların bulunması ve listelenmesi değil mi? bu kodda onu yapıyor nasıl yapıyor dersen denersen görürsün...bak orda List:TStringList yazıyor parametre olarak oraya bir stringlist tanımlayacaksın sonra listbox1.items.addstrings(list) diyeceksin sonuç gelecek listbox'ına...

Şimdi farkkettim zaten örneğide vermişim koddda....
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Mesaj gönderen Trial_Cooder »

teşekkürler kusura bakma deniyorum
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Mesaj gönderen Trial_Cooder »

ve sadece altklasör leri listelemek istiyorum (klasör olarak) nasıl yaparım bunu ?
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

fadirectory fahidden gibi değişkenleri helpten incele rahatlıkla yapman gerek. yukardaki örnekte işin mantğı zaten var. recursive prosedure kullanımın en güzel örneği senin sorun zaten.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Mesaj gönderen Trial_Cooder »

ben bir türlü listeleyemedim şu klasörleri :S

Kod: Tümünü seç

procedure FindFiles(const Path, Mask: string; IncludeSubDir: boolean; Out List:TStringList);
var
  FindResult: integer;
  SearchRec : TSearchRec;
begin
  FindResult := FindFirst(Path + Mask, faAnyFile - faDirectory, SearchRec);
  while FindResult = 0 do
  begin
    { do whatever you'd like to do with the files found }
    List.Add(Path + SearchRec.Name);
    FindResult := FindNext(SearchRec);
  end;
  { free memory }
  FindClose(SearchRec);
  if not IncludeSubDir then
    Exit;
  FindResult := FindFirst(Path + '*.*', faDirectory, SearchRec);
  while FindResult = 0 do
  begin
    if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
        FindFiles (Path + SearchRec.Name + '\', Mask, True,List);
    FindResult := FindNext(SearchRec);
  end;
  { free memory }
  FindClose(SearchRec);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    liste:=TStringList.Create;
    FindFiles('C:\','*',False,liste);
    ListBox1.Items.AddStrings(liste);
    liste.Free;
end;
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Mesaj gönderen Trial_Cooder »

yokmu çözebilen :?
Kullanıcı avatarı
sarp_halit
Üye
Mesajlar: 241
Kayıt: 17 Ara 2003 04:30
Konum: Cennet Fethiye
İletişim:

Mesaj gönderen sarp_halit »

arkadaşlar kodlar normal çalışıyor; ancak benim merak ettiğim konu şu: ben burada bulduğum dosyaları bir bileşene aktarırken ( örneğin: listbox) sadece dosya isimlerini nasıl yazdırabilirim. yani bütün yolu istemiyorum. sadece bulunan dosyaların isimlerini yazdırmak istiyorum
Fethiye den herkese sevgiler ...
X))@:>
Kullanıcı avatarı
sarp_halit
Üye
Mesajlar: 241
Kayıt: 17 Ara 2003 04:30
Konum: Cennet Fethiye
İletişim:

Mesaj gönderen sarp_halit »

extractfilename ile yaptım arkadaşlar.
Fethiye den herkese sevgiler ...
X))@:>
Cevapla