Dosya yolunu bulmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
izmirlikemal
Üye
Mesajlar: 155
Kayıt: 10 Oca 2014 01:08
Konum: izmir/Buca

Dosya yolunu bulmak

Mesaj gönderen izmirlikemal »

Hayırlı Ramazan'lar
Konu başlığında belirttiğim gibi;
Dosyanın adını ve/veya uzantısını edit nesnesine girerek o dosyanın(klasör değil) yolunu klasör ve alt klasörleriyle birlikde getirebilirmiyiz?
Bunu Delphinin dosya ve dosyalama fonksiyonları adı altında internetde arattım ancak sonuca ulaşamadım. Delphi de böyle bir fonksiyonun varlığını
bilen dostum varmı? Yardımlarınız için teşekkür ederim dostlarım.
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Dosya yolunu bulmak

Mesaj gönderen ertank »

Merhaba,

Yapmak istediğinizi bir dosya aramak gibi anlıyorum ancak emin olamadım.
Sorunuzu daha net şekilde ve mümkün ise bir örnek vererek sorabilir misiniz?
Kullanıcı avatarı
IZLEN
Üye
Mesajlar: 58
Kayıt: 07 Mar 2008 02:40
İletişim:

Re: Dosya yolunu bulmak

Mesaj gönderen IZLEN »

slm ayni dosyadan baska baska klasorlerde birden fazla varsa hangisini alacaksiniz tumunu mu bu da onemli tabi
İzlen
izmirlikemal
Üye
Mesajlar: 155
Kayıt: 10 Oca 2014 01:08
Konum: izmir/Buca

Re: Dosya yolunu bulmak

Mesaj gönderen izmirlikemal »

ertank dostum iyi akşamlar.
örnek vereck olursam:
dosyanın adı: izmirlikemal.mp3
bu dosya PC de sadece bir yerde kayıtlı ve 1 adet var.
izmirlikemal.mp3 dosyası diyelimki bu dosyanın adresi: c:\programfiles\site_teknik\muzik\izmirlikemal.mp3
şeklinde, benim ulaşmak istediğim 'c:\programfiles\site_teknik\muzik'
sanırım açıklamam yeterlidir.
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Dosya yolunu bulmak

Mesaj gönderen ertank »

Eğer "c:\programfiles\site_teknik\muzik\izmirlikemal.mp3" bilgisi bir değişken içinde ise aşağıdaki fonksiyon ile istediğinizi gerçekleştirebilirsiniz:

Kod: Tümünü seç

const
  Dosya = 'c:\programfiles\site_teknik\muzik\izmirlikemal.mp3';
var
  DosyaYolu: string;
begin
  DosyaYolu := ExtractFilePath(Dosya); // Bu satırdan sonra DosyaYolu = 'c:\programfiles\site_teknik\muzik' olacak
  DosyaYolu := IncludeTrailingPathDelimiter(DosyaYolu); // Bu satırdan sonra DosyaYolu = 'c:\programfiles\site_teknik\muzik\' olacak
end;
izmirlikemal
Üye
Mesajlar: 155
Kayıt: 10 Oca 2014 01:08
Konum: izmir/Buca

Re: Dosya yolunu bulmak

Mesaj gönderen izmirlikemal »

Değerli dostum ertank;
Dosya yolunu örneklemek amacıyla verdim.
Sorun:
-------
Form1 e 2 adet edit, 1 adet Button1 eklediğimizi düşünelim,
Örneğin edit1 hücresine izmirlikemal.mp3 yazdım diyelim,
Button1 e tıkladığım zaman, edit2 hücresine 'c:\programfiles\site_teknik\muzik' yazılmasını istiyorum.
İyi akşamlar, İlginize teşekkür ederim.
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Dosya yolunu bulmak

Mesaj gönderen ertank »

Yapmak istediğiniz disk üzerinde dosya arayıp bulmak. Dosyayı bulduğunuz zaman dizin bilgisi de elinize geçmiş olacaktır.
Bunun için aşağıdaki gibi bir kod kullanmanız mümkün olabilir:

Kod: Tümünü seç

uses
  System.IOUtils,
  System.Types;


function FindFile(const FileName: string; out FoundFile: string): Boolean;
var
  SearchOption: TSearchOption;
  FilesFound: TStringDynArray;
begin
  Result := False;

  if Trim(FileName) = EmptyStr then Exit();

  Screen.Cursor := crHourGlass;
  try
    SearchOption := TSearchOption.soAllDirectories;
    FilesFound := TDirectory.GetFiles('C:\', Trim(FileName), SearchOption);
    if Length(FilesFound) > 0 then
    begin
      Result := True;
      FoundFile := FilesFound[0];
    end;
  finally
    Screen.Cursor := crDefault;
  end;
end;
TDirectory.GetFiles() fonksiyonu disk üzerinde bulabildiği tüm dosyaları geri çevirecektir. Birden fazla dosya diskin farklı dizinlerinde olabilir. Ancak örnek fonksiyon ilk dosya adını geriye çevirecektir. Çoğu zaman bu dosya disk üzerine ilk kaydedilmiş dosya olacaktır. Ancak bunun bir garantisi yok.

Kullanımı aşağıdaki gibi olacaktır:

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  Directory: string;
begin
  if FindFile(Edit1.Text, Directory) then
  begin
    Directory := TPath.GetDirectoryName(Directory);
    Edit2.Text := Directory;
  end
  else
  begin
    Edit2.Text := 'Dosya bilgisayar üzerinde bulunamadı!';
  end;
end;
izmirlikemal
Üye
Mesajlar: 155
Kayıt: 10 Oca 2014 01:08
Konum: izmir/Buca

Re: Dosya yolunu bulmak

Mesaj gönderen izmirlikemal »

Değerli dostum ertank
Örnekleme yaptığınız kodlardan çok yararlandım.Tekrarlamakda bir sakınca görmüyorum size ilginizden dolayı çok teşekkür ederim. İlginizin tüm site üyelerine veya üye olmayan arkadaşlara faydalı olması en büyük arzum.
Cevapla