09 April 2009

Penggunaan File Resource pada Delphi

Setiap aplikasi yang kita buat biasanya menggunakan resource. Resource merupakan elemen pendukung program seperti bitmap, icon, cursor, dan lain-lain. Ada kalanya kita juga ingin menambahkan file tertentu pada file aplikasi kita. Misalnya file audio yang akan dijalankan pada event tertentu atau file skrip yang berisi kumpulan perintah SQL untuk membuat database dan isinya. Kita tidak ingin memisahkan file-file pendukung tersebut, tapi dijadikan satu dengan file aplikasi kita. Kita akan membuat file resource yang berisi file-file yang diinginkan dengan tool dari Delphi “brcc32.exe” (Borland Resource Compiler). Tool ini digunakan untuk compile file resource. Untuk membuat file resource, ikuti langkah-langkah berikut.

Membuat file skrip resource (.rc).
Buat file dengan ekstensi .rc yang merupakan deskripsi dari file-file yang disertakan. File ini bisa dibuat dari editor teks seperti notepad. Isi dari file ini merupakan daftar file resource yang dibuat per baris dengan format:
ResName ResType ResFileName
ResName merupakan nama yang unik untuk tiap file resource, ResType merupakan tipe resource dan ResFileName adalah nama file. Contohnya:
Clock WAVE “c:\avi\clock.wav”
Cool AVI “c:\avi\cool.avi”
CreateDB RCDATA “c:\skrip\createdb.sql”
Terdapat banyak tipe resource termasuk icon, bitmap, audio, dan lain-lain. Tipe RCDATA tipe data umum yang merupakan tipe data mentah, salah satunya adalah data binary atau file exe.

Membuat file resource (.res)
Supaya dapat digunakan pada aplikasi, file .rc tersebut harus di compile menjadi file .res dengan menggunakan tool “brcc32.exe”. File ini terletak di direktori Delphi\bin. Misalnya file skrip resource tadi disimpan dengan nama “appres.rc”. Buka command prompt dan ketikkan perintah:
brcc32 appres.rc
Jika berhasil akan membuat file “appres.res” di direktori yang sama dengan direktori tempat file “appres.rc” berada.

Gunakan file resource yang telah di compile pada aplikasi.
Setelah file resource terbuat, tinggal menambahkan pada unit kita. Caranya adalah dengan menambahkan compiler directive {$R} dibawah baris {$R *.dfm}.
{$R *.dfm}
{$R appres.res}
Baris pertama {$R *.dfm} sudah ada pada program dan jangan sampai terhapus, tinggal menambahkan baris dua, {$R appres.res}. Setelah itu file resource siap dipakai.
Untuk menampilkan animasi pada file “cool.avi”, kita membutuhkan komponen TAnimate pada tab Win32 (misal nama: Animate1), dan salin kode berikut ini untuk menjalankan animasi.
Animate1.ResName := 'Cool';
Animate1.ResHandle := HInstance;
Animate1.Active := True;
Untuk memainkan file .wav yang ada pada file resource, salin kode berikut ini.
uses MMSystem;

var
  hFind, hRes: THandle;
  Lagu: PChar;
begin
  hFind := FindResource(HInstance, 'Clock', 'WAVE');
  if hFind <> 0 then
  begin
    hRes := LoadResource(HInstance, hFind);
    if hRes <> 0 then
    begin
      Lagu := LockResource(hRes);
      if Assigned(Lagu) then sndPlaySound(Lagu, SND_ASYNC or SND_MEMORY);
      UnlockResource(hRes);
    end;
    FreeResource(hFind);
  end;
end;
Terakhir untuk menjalankan skrip file yang ada pada file resource, kita perlu mengektrak file skrip tersebut ke suatu direktori dan kemudian memproses file tersebut.
var
  filename: string;
  rStream: TResourceStream;
  fStream: TFileStream;
begin
  filename := 'createdb.sql';
  rStream := TResourceStream.Create(HInstance, 'CreateDB', RT_RCDATA);
  try
    fStream := TFileStream.Create(filename, fmCreate);
    try
      fStream.CopyFrom(rStream, 0);
    finally
      fStream.Free;
    end;
  finally
    rStream.Free;
  end;
  …
end;
File apapun dapat disimpan pada file resource dengan tipe RCDATA. File .exe, file database, dan lain-lain. Tidak ada batasan tipe file apa saja bisa masuk.

1 komentar: