Selasa, 08 Mei 2018

Mencetak Nama File dalam Suatu Folder Tertentu Kedalam Teks dengan delphi

Kita terkadang memerlukan daftar files atau folder untuk lokasi tertentu misalnya untuk dicetak. sehingga kita harus membuat list nama nama file dan extensionnya dan kemudian menuliskannya kedalam sebuah text


berikut contoh programnya dalam delphi

buat project baru yang isinya

1. ListBox

2. Button

3. OpenDialog




procedure LoadFilesByMask(lst: TStrings; const SpecDir: string);
var
   intFound: Integer;
   SearchRec: TSearchRec;
begin
   lst.Clear;
   intFound := FindFirst(SpecDir + '*.*', faAnyFile, SearchRec);
   while intFound = 0 do
      begin
         //lst.Add(SpecDir + SearchRec.Name); // gunakan bila ingin sampai folder
           lst.Add(SearchRec.Name); // gunakan untuk nama file saja
           intFound := FindNext(SearchRec);
      end;
   FindClose(SearchRec)
end;


kemudian doubleklik pada Button1 dan isikan procedure berikut


procedure TForm1.Button1Click(Sender: TObject);
var
   strDir:string;
   DirSelected: string;
begin
   if SelectDirectory('Select a folder:', 'D:\Delphi', DirSelected) then
      begin
         strDir:=DirSelected + '\'; // bagian pentingnya disini
         LoadFilesByMask(ListBox1.Items, strDir); // bagian pentingnya disini
      end
   else
      begin
         ShowMessage('You did not select a folder');
      end;
end;



jangan lupa pada uses tambahkan FileCtrl karena kita menggunakan open folder (ada pada postingan sebelumnya tentang Select Folder Memanfaatkan Open Dialog di Delphi)


selesai...
saatnya untuk RUN


Klik Button1


Pilih Folder yang ingin di list


Kemudian Klik OK. maka akan muncul isi dari folder tersebut kedalam ListBox


bagian yang tidak ada extensionnya adalah folder.

bila ingin menampilkan seluruh isi sampai ke akar foldernya maka lakukan sedikit modifikasi pada coding nya


procedure LoadFilesByMask(lst: TStrings; const SpecDir: string);
var
   intFound: Integer;
   SearchRec: TSearchRec;
begin
   intFound := FindFirst(SpecDir + '*.*', faAnyFile, SearchRec);
   while intFound = 0 do
      begin
         if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
            begin
               if (SearchRec.Attr and faDirectory) = faDirectory then
                  LoadFilesByMask(lst, SpecDir + SearchRec.Name + '\')
              else
                  lst.Add(SpecDir + SearchRec.Name); // gunakan bila ingin sampai folder
               //lst.Add(SearchRec.Name); // gunakan untuk nama file saja
             end;
       intFound := FindNext(SearchRec);
   end;
   FindClose(SearchRec);
end;



Terimakasih

Berkah Dalem ⍏









Tidak ada komentar:

Posting Komentar