Select Page

Lazarus Free Pascal memiliki beberapa cara untuk menemukan file diantaranya FileExists(), FindFile() dan FileSearch() yang mana semua fungsi pencarian file tersebut menggunakan unit SysUtils.

FileExists

Fungsi FileExists mengembalikan return boolean setelah mencari file. True jika file ditemukan dan flase jika file tidak ditemukan.

function FileExists(const FileName: UnicodeString; FollowLink: Boolean = True):Boolean;

function FileExists(const FileName: RawByteString;  FollowLink: Boolean = True):Boolean;

FileSearch

Fungsi FileSearch ialah mencari nama file dalam sebuah path dimana nama file dan dan path atau direktori dipisahkan dengan tanda semikolon/koma. FileSearch mengembalikan nama file lengkap dari kecocokan pertama yang ditemukan.

function FileSearch(const Name: UnicodeString;  const DirList: UnicodeString;  Options: TFileSearchOptions = [sfoImplicitCurrentDir]):UnicodeString;

function FileSearch( const Name: UnicodeString;  const DirList: UnicodeString;  ImplicitCurrentDir: Boolean):UnicodeString;

function FileSearch( const Name: RawByteString;  const DirList: RawByteString;  Options:TFileSearchOptions = [sfoImplicitCurrentDir]):RawByteString;

function FileSearch( const Name: RawByteString;  const DirList: RawByteString;  ImplicitCurrentDir: Boolean):RawByteString;

FindFirst

Berbeda dengan fungsi FileExists dan FileSearch. FindFirst tidak dapat berdiri sendiri tapi memerlukan fungsi lain, FindClose, dan opsional FindNext untuk pencarian file berikutnya. Dengan adanya fungsi FindNext memungkinkan kamu melakukan pencarian beberapa file dalam satu operasi. FindFirst memberikan return 0 yang berarti file ditemukan serta filehandle paling lengkap yakni nama file, waktu dan ukuran file yang dapat digunakan untuk keperluan lain.

function FindFirst( const Path: UnicodeString;  Attr: LongInt;  out Rslt: TUnicodeSearchRec):LongInt;

function FindFirst(const Path: RawByteString;  Attr: LongInt;  out Rslt: TRawbyteSearchRec):LongInt;

FindFirst mencari file yang sesuai dengan nama file dan wildcard (opsional) serta atribut tambahan attr. Dimana Attr adalah kombinasi or-ed dari konstanta berikut:

faAnyFile

Temukan file apa saja (ini adalah kombinasi dari flag lainnya).

faReadOnly

File ini hanya bisa dibaca.

faHidden

Filenya disembunyikan. (Di UNIX, ini berarti nama file dimulai dengan titik)

faSysFile

File tersebut adalah file sistem (Di unix, ini berarti file tersebut adalah file adalah karakter blok atau file FIFO).

faVolumeId

Drive volume label. Tidak mungkin dilakukan di unix, dan pada sistem mirip Windows, ini hanya berfungsi untuk sistem file FAT (bukan Fat32 dari VFAT).

faDirectory

File adalah direktori.

faArchive

File perlu diarsipkan. Tidak mungkin di Unix

FindNext

Diparagraf diatas disebutkan bahwa fungsi FindFirst dilengkapi juga dengan fungsi FindNext untuk pencarian file berikutnya. Ketika terjadi error maka return akan menghasilkan bukan nol.

function FindNext(var Rslt: TUnicodeSearchRec):LongInt;
function FindNext( var Rslt: TRawbyteSearchRec):LongInt;

FindClose

Findclose merupakan penutup dan membersihkan memory dari rangkaian pencarian menggunakan fungsi FindFirst.

procedure FindClose( var F: TUnicodeSearchRec);

procedure FindClose( var F: TRawbyteSearchRec);

Contoh Peenggunaan Fungsi Pencarian File

Berikut saya sertakan contoh penggunaan ketiga fungsi pencarian file: FileExists, FileSearch dan FindFile agar kamu dapat memilih fungsi mana yang sesuai dengan program yang kamu buat.

Contoh FileExists

procedure TForm1.Button2Click(Sender: TObject);
begin
  if FileExists('\C:\DATA2\TEST\image.jpg') then
    ShowMessage('FileExists: File is found')
  else
    ShowMessage('FileExists: File is not found');
end;

Contoh FileSearch

procedure TForm1.Button2Click(Sender: TObject);
begin
  if FileExists('\C:\DATA2\TEST\image.jpg') then
    ShowMessage('FileExists: File is found')
  else
    ShowMessage('FileExists: File is not found');
end;

Contoh FindFirst

procedure TForm1.Button4Click(Sender: TObject);
var
  Info : TSearchRec;
  Count : Longint;
  Msg, FileInfo: string;
begin
  Count:=0;
  Msg:= '';
  If FindFirst ('c:\Windows\*.*',faAnyFile,Info)=0 then
    begin
    Repeat
      Inc(Count);
      With Info do
        begin
        If (Attr and faDirectory) = faDirectory then
          FileInfo:= Name + ' , ' + inttostr(Size);
          Msg:= Msg + #13#10 + 'Dir ' + FileInfo ;
        end;
    Until FindNext(info)<>0;
    FindClose(Info);
    end;
  ShowMessage(Msg + #13#10 + 'Found: ' + inttostr(Count) + ' file(s)');
end;

Lebih detil bisa unduh contoh program pencarian file disini.