Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Dosya aramada hatam nerde
#1
Merhaba arkadaşlar.
Mp3 dosya aramakta kullandığım aşağıdaki gibi prosedürüm var. Edit1 içerisine isimini girdiğim mp3 dosyalarını, klasör ve alt klasörde arıyor.
Aramada alt klasörlerde arayı devre dışı bırakırsam arama gerçekleşiyor.
Alt dizinleri arama 
Mp3_Ara('F:\Müzikler', FMP3_ARA.Edit1.Text,'*.mp3', False );

Fakat alt dizinleri dahil edersem, yani sondaki değeri True yaparsam program kırılıyor.
Mp3_Ara('F:\Müzikler', FMP3_ARA.Edit1.Text,'*.mp3', True );

Arama kod bloğum şu şekilde

procedure Mp3_Ara(const Dosya_Yolu, Dosya_Adi,Dosya_Turu: string; const Alt_klasorde_ara: boolean  );
var
   Rec                  : TSearchRec;
   Path                 : string;
   Mp3_adi, yolu    : string;
begin

Path := IncludeTrailingBackslash(Dosya_Yolu);
if FindFirst(Path + Dosya_Adi+Dosya_Turu, faAnyFile - faDirectory, Rec) = 0 then
try
  repeat
      Mp3_adi:=Rec.Name;
       if Mp3_adi<>'' then begin
           yolu:=Path+Rec.Name;
           if pos('.mp3',Mp3_adi)>0 then System.Delete(Mp3_adi, Pos('.mp3', Mp3_adi) , Pos('.mp3', Mp3_adi) + Length('.mp3')-1 );
           FMP3_ARA.ListBox1.Items.AddObject(Mp3_adi , TMp3_Item.Create(yolu));
       end;

  until FindNext(Rec) <> 0;
finally
  FindClose(Rec);
end ;

If not Alt_klasorde_ara then Exit;

if FindFirst(Path +'*.*', faDirectory, Rec) = 0 then
try
  repeat
   if ((Rec.Attr and faDirectory) <> 0)  and (Rec.Name<>'.') and (Rec.Name<>'..') then
        Mp3_Ara(Path,Rec.Name, Dosya_Turu, True);  ///BURADA HATAM VAR AMA ÇÖZEMEDİM
  until FindNext(Rec) <> 0;
finally
  FindClose(Rec);
end ;

end;
Cevapla
#2
Aşağıdaki kısımdaki Path yerine Path + Rec.Name gibi bir şey yollaman lazım

if FindFirst(Path +'*.*', faDirectory, Rec) = 0 then
try
 repeat
  if ((Rec.Attr and faDirectory) <> 0)  and (Rec.Name<>'.') and (Rec.Name<>'..') then
       Mp3_Ara(Path,Rec.Name, Dosya_Turu, True);  ///BURADA HATAM VAR AMA ÇÖZEMEDİM
 until FindNext(Rec) <> 0;
finally
 FindClose(Rec);
end ;

Ayrıca System.IOUtils içindeki TDirectory class'ı altındaki GetFiles, GetDirectories motodlarını kullanmanı tavsiye ederim, kullanımı ve kodu daha temiz ve hoş diye düşünüyorum.
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Dosya Taşıma dkadir 2 82 13-02-2018, Saat: 10:07
Son Yorum: Cyber
  Dosya İndirme yhackup 3 114 06-02-2018, Saat: 10:04
Son Yorum: yhackup
  DXF dosya çalışması boreas 1 196 25-07-2017, Saat: 10:02
Son Yorum: barutali
  Windows api index hzılı dosya arama veya MFT Master File Table Dosya Arama carsoft 3 327 08-07-2017, Saat: 10:09
Son Yorum: carsoft
  Dosya var ama yok diye hatta veriyor(çözüldü) admin02 12 729 05-06-2017, Saat: 23:08
Son Yorum: admin02



Konuyu Okuyanlar: 1 Ziyaretçi