Tuesday, July 22, 2008

APLIKASI TRIAL DENGAN DELPHI

Apabila temen-temen ada yang belum bisa membuat program aplikasi trial dengan mengkombinasikan database registry, maka janganlah khawatir, berikut ini merupakan pengembangan dari artikel saya sebelumnya yang diperbaharui dengan menambahkan program aplikasi main manager untuk mengontrol program aplikasi yang trial.
Semoga contoh artikel ini bisa membantu temen2 dalam mengembangkan ilmu pemrograman terutama yang berhubungan dengan bahasa pemrograman Delphi.

berikut ini saya akan berikan contoh 2 program aplikasi dengan bagian seperti berikut ini.

1. Program aplikasi Trial
2. Program Manager untuk control Program aplikasi Trial.

Untuk tahap awal, kita kerjakan untuk program aplikasi Trial.

Langsung saja silahkan anda lihat kode program beserta penjelasan seperti terlihat pada kode program berikut ini.


unit Unit1;

interface

uses
// Jangan lupa temen-temen untuk menambahkan library Registry agar bisa
// mendeklarasikan object TRegistry
// Awas lho ya kalau sampai lupa...... tak juewer kupingnya.... weakakakak
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Registry, ExtCtrls, StdCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
Bevel1: TBevel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
// Deklarasikan dulu nama atomnya
// ini dilakukan jika anda menjadikannya sebagai variabel
// So jika setiap kali anda menganggapnya sebagai variabel,
// maka jangan lupa anda mendeklarasikannya terlebih dahulu
NamaAtom : PChar;
// Deklarasikan object TRegistry
// Ini digunakan jika memang temen2 yang ingin contoh sebenarnya
// menggunakan registry itu seperti apa sih...
// tapi untuk caranya pasti banyak sekali caranya dan ini
// merupakan salah satu cara bagaimana kita memanfaatkan database
// registry untuk memproteksi program aplikasi kita dengan
// cara trial.
// Semoga ini bisa menjadi acuan atau bahan untuk belajar object
// registry, apabila ada yang kurang jelas silahkan buat thread baru
// atu bisa juga PM bahwkan email maupun YM di eko_elits@yahoo.com
// dan eko_elits
Reg : TRegistry;
begin
// Create object TRegistry agar bisa diakses dan digunakan
Reg := TRegistry.Create;
// proses perampingan koding dengan memanggil nama object sekali
with Reg do
begin
// Buka key dari database registry dengan default root key-nya
// di posisi -->> HKEY_CURRENT_USER
// Jika nama Section \"Registry Eko Indriyawan\" tidak dijumpai, maka
// akan dibuat Section tersebut.
// kenapa ini dibuat, karena kita memberikan status default True
// seperti ditunjukkan pada baris kode program dibawah ini
OpenKey('Registry Eko Indriyawan',True);
// Jika anda ganti default status buat-nya dengan False, maka
// jika section yang anda maksudkan tidak dijumpai, section yang anda
// tentukan tadi diakan dibuat atau di-create....

// Berikut dibawah ini adalah baris kode program untuk mengambil
// data dari database registry dengan nama key \"Key Registered\"
// tentu saja value yang diambil dari data key dikonversi dulu
// ke tipe PChar agar bisa dibaca oleh fungsi GlobalFindAtom
NamaAtom := PChar(ReadString('Key Registered'));
// Validasi apakah ditemukan atom-nya
// selain itu juga di cek apakah nama atom yang ditentukan
// benar-benar ada atau tidak.
// Ini digunakan untuk menditeksi apakah program aplikasi sudah
// diregister atau belum diregister.
// Jika jumlah karakter nama atom sama dengan nol, maka kita anggap
// bahwa program aplikasi belum diregister. Dengan catatan key
// untuk regsiter tidak null atau kosong
if (GlobalFindAtom(NamaAtom) = 0)and(Length(NamaAtom)<>0) then
begin
// register atom ke sistem
GlobalAddAtom(NamaAtom);
// keluar dari eksekusi baris program selanjutnya
// dan program siap dioperasikan
exit;
end
else if Length(NamaAtom) = 0 then
begin
// karena jumlah karakter dari variabel NamaAtom adalah 0
// maka sesuai dengan kesepakatan sebelumnya, bahwa program aplikasi
// ini berarti belum diregister
MessageDlg('Program aplikasi ini belum diregister...',mtInformation,[mbOK],0)
end
else
begin
// Informasi kalau program aplikasi sudah pernah diregister dan masa
// trial sudah habis.
// untuk menjalankannya, silahkan anda register ulang dengan cara
// mengganti key registernya...
// ini merupakan cara yang bagus sekali karena tanpa harus melakukan
// proses restart komputer
MessageDlg('Program ini hanya dapat dijalankan sekali dalam satu sesi Windows'+#10#13+
'Untuk menjalankan program ini lagi, restart komputer Anda atau silakan' + #10#13+
'Silahkan anda minta untuk register ulang !!',mtInformation,[mbOK],0);
end;
// CloseKey, digunakan untuk menutup key yang sekarang sedang
// aktif
CloseKey;
// Hapus alokasi memory yang telah digunakan oleh Object TRegistry
Free;
// Tutup Program aplikasi
Application.Terminate;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := True;
case MessageDlg('Apakah anda yakin akan keluar dari program aplikasi ini?'+#13#13+
'Ingat lho... anda tidak ada kesempatan lagi'+#13+
'NB : Anda bisa aktifkan lagi dengan cara register ulang....',
mtConfirmation,[mbYes,mbNo],0) of
mrYes:
begin
end;
mrNo:
begin
CanClose := False;
end;
end;
end;

end.

Syntax Highlighted with http://delphi-id.org/syntax


Kumudian silahkan anda setting Formnya seperti berikut dibawah ini.
Sebelumnya, silahkan anda hapus semua object yang ada didalam form
Namun apabila anda belum menambahkan sama sekali object kedalam form,
maka langsung saja silahkan anda klik kanan form-nya dan pilih [b]View as Text[/b], setelah itu atur konfigurasi form dan objectnya seperti berikut.

Namun temen2 jangan konyol dengan mengetikkan seperti dibawah ini,
cukup copy dari konfigurasi berikut ini, setelah itu lanjutkan paste di Delphi-nya.


object Form1: TForm1
Left = 152
Top = 100
Width = 393
Height = 208
Caption = 'Program develop by Eko Indriyawan'
Color = clWhite
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnCloseQuery = FormCloseQuery
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 116
Top = 64
Width = 154
Height = 13
Caption = 'Aplikasi berhasil untuk diaktifkan'
end
object Bevel1: TBevel
Left = -8
Top = 141
Width = 388
Height = 9
Shape = bsTopLine
end
object Label2: TLabel
Left = 4
Top = 88
Width = 95
Height = 13
Caption = 'For more information'
end
object Label3: TLabel
Left = 76
Top = 104
Width = 142
Height = 13
Caption = 'eko_elits@yahoo.com'
Font.Charset = DEFAULT_CHARSET
Font.Color = clOlive
Font.Height = -11
Font.Name = 'Verdana'
Font.Style = [fsBold]
ParentFont = False
end
object Label4: TLabel
Left = 20
Top = 104
Width = 34
Height = 13
Caption = 'E - mail'
end
object Label5: TLabel
Left = 20
Top = 120
Width = 16
Height = 13
Caption = 'YM'
end
object Label6: TLabel
Left = 76
Top = 120
Width = 60
Height = 13
Caption = 'eko_elits'
Font.Charset = DEFAULT_CHARSET
Font.Color = clOlive
Font.Height = -11
Font.Name = 'Verdana'
Font.Style = [fsBold]
ParentFont = False
end
object Button1: TButton
Left = 305
Top = 144
Width = 75
Height = 25
Caption = 'Close'
TabOrder = 0
OnClick = Button1Click
end
end

Syntax Highlighted with http://delphi-id.org/syntax


Setelah itu, klik kanan dan pilih [b]View as Form[/b]
Tekan tombol [b]Ctrl + A[/b]
Lanjutkan dengan tekan tombol [b]Ctrl+X[/b]
Teruskan dengan tekan tombol [b]Ctrl+V[/b]

Sekarang silahkan anda tekan tombol [b]Ctrl + F9[/b] untuk cek apakah ada error atau tidak.

Jika tidak ada error maupun warning, maka silahkan anda tekan tombol [b]F9[/b].

Apa yang terjadi.....

Ternyata program aplikasi anda belum diregister...

untuk itu jangan bingung dulu untuk registrasinya.....
kita lanjutkan terlebih dahulu untuk buat aplikasi yang kedua.

Langsung saja silahkan buat program aplikasi baru
dan tuliskan kode programnya seperti berikut dibawah ini


1.
unit Unit1;
2.

3.
interface
4.

5.
uses
6.
// Sekali lagi jangan lupa untuk tambahkan library Registry kedalam uses
7.
Registry, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
8.
Dialogs, StdCtrls, ExtCtrls;
9.

10.
type
11.
TForm1 = class(TForm)
12.
Button1: TButton;
13.
Edit1: TEdit;
14.
Label1: TLabel;
15.
Bevel1: TBevel;
16.
Button2: TButton;
17.
procedure Button1Click(Sender: TObject);
18.
procedure Button2Click(Sender: TObject);
19.
private
20.
{ Private declarations }
21.
public
22.
{ Public declarations }
23.
end;
24.

25.
var
26.
Form1: TForm1;
27.

28.
implementation
29.

30.
{$R *.dfm}
31.

32.
procedure TForm1.Button1Click(Sender: TObject);
33.
var
34.
// Deklarasikan object TRegistry
35.
Reg : TRegistry;
36.
begin
37.
// Buat Object Tregistry agar bisa diakses dan digunakan
38.
Reg := TRegistry.Create;
39.
// Ringkas object
40.
with Reg do
41.
begin
42.
// Buka section, jika tidak ada maka akan dibuat
43.
OpenKey('Registry Eko Indriyawan',True);
44.
// proses registrasi key berdasarkan yang anda tentukan
45.
// dari object Edit1
46.
WriteString('Key Registered',Edit1.Text);
47.
// CloseKey
48.
CloseKey;
49.
// Lepaskan alokasi memory
50.
Free;
51.
end;
52.
end;
53.

54.
procedure TForm1.Button2Click(Sender: TObject);
55.
begin
56.
close;
57.
end;
58.

59.
end.

Syntax Highlighted with http://delphi-id.org/syntax



Sekarang silahkan anda tekan tombol [b]F12[/b] hingga didapatkan tampilan form
setelah itu silahkan anda klik kanan dan pilih [b]View as Text/b]

Kemudian, silahkan anda copy konfigurasi form beserta object-object yang ada didalamnya seperti berikut dibawah ini dan lanjutkan dengan mem-paste kedalam program delphi anda.


1.
object Form1: TForm1
2.
Left = 192
3.
Top = 114
4.
Width = 318
5.
Height = 172
6.
Caption = 'Develop by Eko Indriyawan'
7.
Color = clWhite
8.
Font.Charset = DEFAULT_CHARSET
9.
Font.Color = clWindowText
10.
Font.Height = -11
11.
Font.Name = 'MS Sans Serif'
12.
Font.Style = []
13.
OldCreateOrder = False
14.
PixelsPerInch = 96
15.
TextHeight = 13
16.
object Label1: TLabel
17.
Left = 16
18.
Top = 16
19.
Width = 18
20.
Height = 13
21.
Caption = 'Key'
22.
end
23.
object Bevel1: TBevel
24.
Left = 16
25.
Top = 104
26.
Width = 289
27.
Height = 25
28.
Shape = bsTopLine
29.
end
30.
object Button1: TButton
31.
Left = 16
32.
Top = 56
33.
Width = 75
34.
Height = 25
35.
Caption = 'Registered'
36.
TabOrder = 0
37.
OnClick = Button1Click
38.
end
39.
object Edit1: TEdit
40.
Left = 16
41.
Top = 32
42.
Width = 121
43.
Height = 21
44.
TabOrder = 1
45.
Text = 'Eko Cakep'
46.
end
47.
object Button2: TButton
48.
Left = 231
49.
Top = 108
50.
Width = 75
51.
Height = 25
52.
Caption = 'Close'
53.
TabOrder = 2
54.
OnClick = Button2Click
55.
end
56.
end

Syntax Highlighted with http://delphi-id.org/syntax



Baiklah, sekarang silahkan anda lanjutkan dengan klik kanan dan pilih [b]View as Form[/b]

Tekan tombol [b]Ctrl + F9 [/b] untuk mengecek apakah ada error atau tidak.

setelah tidak ada error silahkan anda lanjutkan dengan menekan tombol [b]F9[/b]

Program siap jalan...

sekarang silahkan anda tentukan key untuk register, sebagai contoh [b]Eko Cakep[/b].

Tutup program aplikasi ini..
kemudian silahkan anda buka lagi program aplikasi trialnya...

apa yang terjadi ?
ternyata program bisa jalan...

jika anda akan matikan, sebelumnya ada konfirmasi....
apabila anda matikan, maka program sudah tidak bisa dijalankan lagi sebagaimana mestinya.

Namun anda bisa jalankan lagi apabila anda melakukan proses registrasi ulang.

Semoga contoh program ini bisa memberikan ilmu tambahan buat temen-temen yang belum mengetahuinya...