Dosya Uzantısı Tarayıcı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
dkadir
Üye
Mesajlar: 40
Kayıt: 04 Oca 2014 06:44

Dosya Uzantısı Tarayıcı

Mesaj gönderen dkadir »

Selamun Aleyküm
Belirtilen bir klasör içerisindeki bütün dosyaların uzantılarını almam gerekiyor
Bunu nasıl yapabilirim
Teşekkürler
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Dosya Uzantısı Tarayıcı

Mesaj gönderen ertank »

Aleyküm selam,

Kullandığınz Delphi sürümünü belirtmemişsiniz. Aşağıdaki örnek Delphi 2010 ve sonrasında çalışmaktadır.

Kod: Tümünü seç

uses
  System.IOUtils,
  System.Types;

procedure GetFileExtensionsInFolder(const FolderName: string; out List: TStringList; const Recursive: Boolean = False);
var
  SearchOption: TSearchOption;
  Files: TStringDynArray;
  I: Integer;
begin
  List.Clear();

  if not Recursive then
    SearchOption := TSearchOption.soTopDirectoryOnly
  else
    SearchOption := TSearchOption.soAllDirectories;

  Files := TDirectory.GetFiles(FolderName, '*.*', SearchOption);
  if Length(Files) > 0 then
  begin
    List.Sorted := True;
    List.Duplicates := dupIgnore;
    for I := Low(Files) to High(Files) do
    begin
      List.Add(Copy(ExtractFileExt(Files[I]), 2, MaxInt));
    end;
  end;
end;
Kullanımı şöyle olabilir:

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  ExtensionList: TStringList;
begin
  ExtensionList := TStringList.Create();
  try
    GetFileExtensionsInFolder(Edit1.Text, ExtensionList);
    ListBox1.Items.Assign(ExtensionList);
  finally
    ExtensionList.Free();
  end;
end;
Eğer alt dizinleri de arasın istiyorsanız prosedürü aşağıdaki şekilde çağırabilirsiniz

Kod: Tümünü seç

  GetFileExtensionsInFolder(Edit1.Text, ExtensionList, True);
NOT: İlgili dizinde eki olmayan dosya var ise bu dosya listenin ilk seçeneği olacak ve değeri boş olacaktır.
dkadir
Üye
Mesajlar: 40
Kayıt: 04 Oca 2014 06:44

Re: Dosya Uzantısı Tarayıcı

Mesaj gönderen dkadir »

Sen mükemmelsin Ertank!
Olurda birgün karşılaşırsak sana kebap ısmarlayacağım :)
Cevapla