Memanggil DLL secara statis
Setelah Anda berhasil membuat DLL, selanjutnya Anda dapat membuat aplikasi yang akan memanggil rutin yang terdapat pada DLL tersebut. Untuk itu, pilih menu File | New Application. Selanjutnya Anda dapat menuliskan kode di bawah ini sebelum klausa implementation.
procedure ShowForm;stdcall;external 'ProyekDLL.dll' name 'ShowFormDLL';
function ShowFormModal:integer;stdcall;external 'ProyekDLL.dll' name 'ShowFormDLLModal';
Klausa external digunakan untuk memberitahu compiler bahwa aplikasi tersebut membutuhkan rutin ShowFormDLL dan ShowFormDLLModal yang terletak pada file eksternal (file di luar program utama) bernama ProyekDLL.dll. Selanjutnya rutin ShowFormDLL dan ShowFormDLLModal akan dipanggil pada event OnClick dari Button1 dan Button2.
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowDllForm;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ShowDllFormModal;
end;
Memanggil DLL secara dinamis
Cara di atas tentunya belum sesuai dengan harapan Anda yang akan mengefisienkan penggunaan memory, karena program di atas akan selalu meloading DLL pada saat aplikasi pertama kali dijalankan. Cara yang kedua ini akan lebih efisian, yaitu dengan memanggil DLL secara dinamis. Dengan kata lain DLL akan dimuat ke memory hanya pada saat diperlukan saja.
Untuk dapat menggunakan rutin yang terdapat pada suatu file DLL, terlebih dahulu Anda harus memanggil file DLL tersebut. Caranya yaitu dengan memanggil fungsi LoadLibrary. Fungsi ini mempunyai sebuah parameter, yaitu nama file DLL yang akan dibuka.
DLLHandle := LoadLibrary('ProyekDLL.dll');
Jika DLL berhasil dibuka maka fungsi LoadLibrary akan mengembalikan nilai bukan nol. Sebaliknya jika gagal akan mengembalikan nilai nol. Setelah DLL berhasil diloading ke dalam memory, selanjutnya Anda dapat memanggil rutin yang terdapat pada DLL tersebut. Yang perlu diperhatikan, Anda tidak dapat menggunakan nama fungsi melainkan dengan memanggil alamatnya. Untuk memanggil alamat fungsi Anda dapat menggunakan fungsi GetProcAddress.
Fungsi GetProcAddress mempunyai dua parameter, parameter pertama adalah handle dari DLL, sedangkan parameter kedua adalah nama fungsi yang akan dipanggil.
if DLLHandle <> 0 then
begin
@ShowForm := GetProcAddress(DLLHandle, 'ShowFormDLL');
@ShowFormModal := GetProcAddress(DLLHandle, 'ShowFormDLLModal');
ShowFormModal;
end;
Setelah Anda selesai menggunakan DLL, Anda dapat membuang DLL tersebut dari memory. Caranya yaitu dengan memanggil fungsi FreeLibrary.
FreeLibrary(DLLHandle);
Download (164 Kb)
Sumber : Delphi Central
Tidak ada komentar:
Posting Komentar