Rabu, 15 Juni 2011

Membuat File Dynamic Link Library (*.DLL) Menggunakan Borland Delphi

Membuat File Dynamic Link Library (*.DLL)
Menggunakan Borland Delphi
Download Delphi7 disini
Sofware untuk pembersih Computer Download di sini
Sekilas Mengenai File Dynamic Link Library (DLL)
Dynamic Link Library atau DLL merupakan file yang berisi rutin (procedure
dan function) yang dapat dipanggil dari file EXE maupun dari file DLL lain. Dengan
meletakkan rutin-rutin pada file DLL (terpisah dari file EXE) maka terdapat beberapa
keuntungan. Pertama, rutin-rutin yang bersifat umum dapat dipakai oleh beberapa
aplikasi pada saat yang bersamaan dan hanya diperlukan satu copy di memory atau
disk. Anda dapat mengatur supaya rutin-rutin yang terdapat pada DLL tersebut dimuat
ke memory hanya saat diperlukan saja. Jika tidak diperlukan maka DLL tersebut dapat
dibuang dari memory.
Dengan demikian aplikasi yang Anda buat dapat lebih menghemat
penggunaan memory. Keuntungan kedua, aplikasi menjadi bersifat modular. Anda
dapat melakukan update aplikasi yang Anda buat tanpa harus mengupdate file EXE.
Dengan demikian Anda cukup menyertakan patches kepada program Anda tanpa
Anda harus menyertakan seluaruh aplikasi.
Keuntungan lain adalah ukuran file EXE menjadi lebih kecil karena beberapa kode
program diletakkan pada file DLL.
Mari kita mulai untuk membuat file DLL., caranya sangat mudah. Mari kita
mulai 
Seperti biasa buka program Delphi Anda boleh Versi 5,6 atau 7.
 Pilih menu File | New | Other | DLL Wizard pada Tab New. (Kebetulan saya
menggunakan Delphi 7)
Kemudian terlebih dahulu anda simpan project tersebut dengan NgatesDLL.dpr.

Pada code editor dapat Anda perhatikan pada bagian paling atas terdapat klausa
library. Hal ini menandakan bahwa proyek yang sedang dibuat adalah proyek file
DLL.
Selanjutnya tambahkan form dari menu File | New Form. Form tersebut harus
ditambahkan ke dalam project, yaitu dengan memilih menu Projet | Add to Project
dan pilih file unit dari Form (Save as unit beri nama unitnya dengan
SumberDLL.pas dan nama formnya FrmSumberDLL). Contoh DLL ini
mempunyai dua method (satu procedure dan satu function) yang berfungsi untuk
menampilkan form. Satu menggunakan Show dan satunya lagi menggunakan
ShowModal.
Kemudian ketikan code berikut pada unis sumberDLL.pas dengan cara menekan
tombol F12.
procedure ShowFormDLL;stdcall;
begin
Application.CreateForm(TfrmSumberDLL,FrmSumberDLL);
frmSumberDLL.Show;
end;
Prosedur di atas, pertama kali akan membuat form. Parameter nil digunakan, karena
kita tidak mengetahui siapa pemilik (owner) formnya. Selanjutnya form yang baru
dibuat tersebut akan ditampilkan dengan menggunakan method Show.
Untuk menampilkan form secara modal yaitu dengan cara membuat fungsi seperti
dibawah ini..
function ShowFormDLLModal:integer;stdcall;
begin
Application.CreateForm(TfrmSumberDLL,FrmSumberDLL);
Result := frmsumberDLL.ShowModal;
end;
Perbedaan antara kode di atas dan kode sebelumnya adalah, bahwa kode di
atas adalah function, sedangkan kode sebelumnya adalah procedure, kode di atas
menggunakan ShowModal sedangkan kode sebelumnya menggunakan Show. Dengan
menggunakan ShowModal Anda dapat mengetahui modal result dari form.
Pada kedua kode tersebut kita membuat form tapi tanpa pernah melakukan destroy,

yang bisa mengakibatkan pemborosan memory (leaking memory). Oleh karena itu
Anda perlu melakukan destroy pada form. Salah satu cara termudah adalah dengan
menggunakan event OnClose dari form dan mengeset TCloseAction menjadi caFree.
Berikut kode lengkapnya dan anda isikan pada form FrmSumberDll pada even
OnClose.
procedure TfrmSumberDLL.FormClose(Sender: TObject; var Action:
TCloseAction);
begin
Action := caFree;
end;
Langkah terakhir adalah melakukan eksport procedure ShowFormDLL dan
function ShowFormDLLModal di atas sehingga dapat digunakan atau dipanggil
oleh program lain.
Exports
ShowFormDLL,
ShowFormDLLModal;
begin
end.
Untuk membuat kode di atas menjadi file DLL pilih menu Project kemudian
Build. kemudian lihat akan terbentuk file dengan nama NgatesDLL.dll
Gambar 3. File dll setelah di Build.
Adapun kode lengkapnya sebagai berikut :
library NgatesDLL;
{ Important note about DLL memory management: ShareMem must be the
first unit in your library's USES clause AND your project's (select
Project-View Source) USES clause if your DLL exports any procedures or
functions that pass strings as parameters or function results. This
applies to all strings passed to and from your DLL--even those that
are nested in records and classes. ShareMem is the interface unit to
the BORLNDMM.DLL shared memory manager, which must be deployed along
with your DLL. To avoid using BORLNDMM.DLL, pass string information
using PChar or ShortString parameters. }

uses
SysUtils,
Classes,
sumberDLL in 'sumberDLL.pas' {FrmSumberDLL};
{$R *.res}
end.
File Unit sumberDLL.pas
unit sumberDLL;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TFrmSumberDLL = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmSumberDLL: TFrmSumberDLL;
implementation
{$R *.dfm}
procedure ShowFormDLL;stdcall;
begin
Application.CreateForm(TfrmsumberDLL,frmsumberDLL);
frmSumberDLL.Show;
end;
function ShowFormDLLModal:integer;stdcall;
begin
Application.CreateForm(TfrmsumberDLL,frmsumberDLL);
Result := frmsumberDLL.ShowModal;
end;
procedure TfrmSumberDLL.FormClose(Sender: TObject; var Action:
TCloseAction);
begin
Action := caFree;
end;
Exports
ShowFormDLL,
ShowFormDLLModal;
begin
end.
Untuk mengtes pemanggilan file DLL yang telah dibuat adalah sebagai berikut.
Buat aplikasi baru dengan cara File | New | Application kemudian simpan
nama projectnya PanggingDLL.dpr dan unitnya Upanggildll.pas pastikan
lokasi penyimpanannya disatukan dengan folder tempat anda menyimpan file
ngatesdll.dll yang telah dibuat sebelumnya untuk memudahkan proses
pemanggilan.
Tambahkan component button pada tab standar lalu isikan captionnya
“Tampilkan Form dari DLL”


Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2006 IlmuKomputer.Com
5
Gambar 4. Form untuk mengetes pemanggilan file ngates.DLL
Kemudian double klik komponen button hingga muncul editor unit untuk
event onClick dan isikan kode berikut:
procedure TForm1.Button1Click(Sender: TObject);
type
TFrmSumberDLL=function:TForm;
Var
LibHandle:THandle;
FrmSumberDLL:TFrmSumberDLL;
tampil:TForm;
begin
libhandle:=loadlibrary('ngatesDLL.DLL');
if (libhandle=0) then
begin
Application.MessageBox('File NgatesDLL.dll tidak ada! silahkan
anda kopikan file DLL yang anda buat tadi',
'Kesalahan Sistem',MB_OK or MB_ICONHAND);
Application.Terminate;
end;
@FrmSumberDLL:=GetProcAddress(libHandle,'ShowFormDLLModal'
tampil:=FrmSumberDLL;
freeLibrary (libhandle);
end;
Setelah itu coba anda jalankan/running dengan menekan tombol F9. kemudian
tekan tombol “ Panggil Form dari DLL” Maka program akan menampilkan
Form dengan memanggil fungsi Showmodal (DLL) pada file NgatesDLL.dll
di file dynamic link library yang anda buat pertama kali.

Mudahkan  cara membuat fila DLL. Sekarang anda bisa membuat project
aplikasi yang lebih ringan karena dengan dibuatnya file dynamic, akan lebih
menghemat memory ketika anda menjalankan aplikasi dan disamping anda akan
lebih mudah dalam mengupdate aplikasi anda tanpa mencompile ulang lagi file
*.exe (executable).
Berikut kode lengkapnya
unit Upanggildll;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
type
TFrmSumberDLL=function:TForm;
Var
LibHandle:THandle;
FrmSumberDLL:TFrmSumberDLL;
tampil:TForm;
begin
libhandle:=loadlibrary('ngatesDLL.DLL');
if (libhandle=0) then
begin
Application.MessageBox('File NgatesDLL.dll tidak ada! silahkan
anda kopikan file DLL yang anda buat tadi',
'Kesalahan Sistem',MB_OK or MB_ICONHAND);
Application.Terminate;
end;
@FrmSumberDLL:=GetProcAddress(libHandle,'ShowFormDLLModal');//pema
nggilan dengan method show
tampil:=FrmSumberDLL;
freeLibrary (libhandle);
end;
end.































Tidak ada komentar:

Posting Komentar

var adfly_advert = 'int'; var adfly_advert = 'banner';