Archive for the Category » Delphi «

Thursday, May 14th, 2009 | Author: Riza

Code berikut adalah rutin program untuk melakukan search seluruh file dan subdirektori yang ada di dalam suatu drive atau direktori tertentu dan ditulis dalam bahasa pemrograman Delphi (object pascal). Searching dilakukan dengan teknik rekursi (recursion).

Continue reading

Tuesday, February 17th, 2009 | Author: Riza

Static method didefinisikan sebagai method (procedure/function) yang beroperasi pada level class, bukan pada level object. Dengan kata lain, sebuah method yang dideklarasikan sebagai static method bisa dipanggil tanpa terlebih dahulu membuat instan dari class tempat method tersebut dideklarasikan. Karena bisa dipanggil tanpa proses inisiasi object, sebuah static method hanya akan disimpan pada satu lokasi memory saja untuk satu aplikasi. Maka dengan sendirinya, walaupun merujuk pada suatu class, static method tidak bisa diakses melalui variabel seperti Self pada object pascal serta this pada C++.

Pada object pascal, static method disebut juga dengan class method (class function atau class procedure). Implementasi adalah dengan menambahkan reserved word class pada awal pendeklarasian sebuah procedure dan function. Perhatikan contoh cara mendeklarasikan static method pada object pascal berikut ini.

Continue reading

Saturday, February 07th, 2009 | Author: Riza

Style Windows Xp - Logo Windows XpSecara default, style Windows Xp tidak diimplementasikan secara otomatis ke aplikasi yang kita buat. Untungnya, Delphi versi 7 dan setelahnya telah menyediakan sebuah komponen khusus bernama XPManifest (TXPManifest). Sehingga hanya dengan menambahkan komponen ini ke salah satu form pada aplikasi yang dibuat, simsalabim! Begitu dijalankan, style aplikasi akan berubah menjadi style Windows Xp. Namun bagaimana jika masih menggunakan Delphi 6 seperti saya? Setelah mencari-cari akhirnya dapat juga cara mengimplementasikan style Windows Xp pada aplikasi yang dibuat tanpa menggunakan komponen tambahan. Langkahnya sebagai berikut:

Continue reading

Friday, November 28th, 2008 | Author: Riza

Animasi 2D mau bagaimana bentuknya pada dasarnya sama saja yaitu menampilkan gambar-gambar secara bergiliran. Untuk membuat animasi pada game 2D pada umumnya, sedikitnya ada tiga class yang terlibat. Ketiga class tersebut adalah:

  1. Class yang merepresentasikan citra/image yang akan dianimasikan. Biasanya disebut sprite. Dalam hal ini adalah TSprite.
  2. Container untuk menampung sprite objects. Container ini juga berperan sebagai sprite manager. Pada contoh code diberi nama TSpriteContainer.
  3. Class yang melakukan animasi. Bisa disebut sprite engine. Pada contoh code disebut TSpriteEngine.

Berikut adalah contoh code yang menampilkan teknik untuk melakukan animasi sederhana. Kelihatannya ribet yah. Mungkin iya karena code berikut adalah implementasi sederhana dari sebuah sprite engine untuk game 2D.

Continue reading

Tuesday, February 19th, 2008 | Author: Riza

Ada beberapa cara yang bisa digunakan untuk membuat single instance application. Saya hanya mau membagi sedikit trik lama yang sering saya gunakan yaitu dengan memanfaatkan API dari windows. Fungsi yang saya gunakan adalah CreateFileMapping dengan sedikit memodifikasi isi dari file project. Cara menggunakannya adalah sebagai berikut:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
...
 
uses Windows, … ;
 
const
  MAX_SIZE_HIGH = 0;
  MAX_SIZE_LOW = 32;
  { Bisa diganti dengan string apa saja yang akan menjadi Id
  dari aplikasi.}
  APP_IDENTIFIER = ‘th3-4ppl1c4t10nk3y’;
 
var
  hMap: THandle;
 
begin
  Application.Initialize;
 
  hMap := CreateFileMapping(0, nil, PAGE_READONLY, MAX_SIZE_HIGH,
  MAX_SIZE_LOW, APP_IDENTIFIER);
  if (hMap <> 0) and (GetLastError = ERROR_ALREADY_EXIST) then
 
  begin
    CloseHandle(hMap);
    Application.Terminate;
  end;
 
  …
 
  Application.Run;
end.

Semoga bermanfaat.

Monday, November 19th, 2007 | Author: Riza

Beberapa hari yang lalu aku bikin fungsi untuk mengambil MAC Address dari ethernet card. Fungsinya aku beri nama GetMacAddress(AEthNumber: Byte). Kembalian dari fungsi ini adalah string dari MAC address ethernet card ber-index AEthNumber. Kalau PC hanya mempunyai sebuah ethernet card, AEthNumber bisa diisi dengan 0 (nol). Fungsi GetMacAddress memanfaatkan unit NB30 bawaan delphi yang berisi beberapa record serta fungsi untuk mengambil informasi network device melalui NetBios.

Mumpung inget, tak dokumentasikan di sini. Sekalian share kali aja ada yang perlu. Code-nya seperti di bawah ini.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
uses NB30;
 
function GetMacAddress(AEthNumber: Byte): string;
var
  ncb: PNCB;
  errorCode: Char;
  adapter: PAdapterStatus;
begin
 
  New(ncb);
  { Inisiasi isi memory pada pointer ncb dengan char 0 };
  FillChar(ncb^, SizeOf(TNCB), 0);
  ncb^.ncb_command := Char(NCBRESET);
  ncb^.ncb_lana_num := Char(AEthNumber);
  errorCode := NetBios(ncb);
 
  { Reset kembali isi memory pointer nbc dengan char 0 };
  FillChar(ncb^, SizeOf(TNCB), 0);
  ncb^.ncb_command := Char(NCBASTAT);
  ncb^.ncb_lana_num := Char(AEthNumber);
  { Harus berisi 16 karakter }
 
  StrPCopy(ncb^.ncb_callname, '*         ');
 
  New(adapter);
  FillChar(adapter^, SizeOf(TAdapterStatus), 0);
  ncb^.ncb_buffer := Pointer(adapter);
  ncb^.ncb_length := SizeOf(TAdapterStatus);
 
  errorCode := NetBios(ncb);
  if (errorCode = Char(NRC_GOODRET)) or
  (errorCode = Char(NRC_INCOMP)) then
    Result := IntToHex(Ord(adapter^.adapter_address[0]), 2) + '-' +
          IntToHex(Ord(adapter^.adapter_address[1]), 2) + '-' +
          IntToHex(Ord(adapter^.adapter_address[2]), 2) + '-' +
          IntToHex(Ord(adapter^.adapter_address[3]), 2) + '-' +
          IntToHex(Ord(adapter^.adapter_address[4]), 2) + '-' +
          IntToHex(Ord(adapter^.adapter_address[5]), 2)
  else
    Result := '00-00-00-00-00-00';
 
  Dispose(ncb);
  Dispose(adapter);
end;

Begitu saja semoga bermanfaat. Kali aja ada yang mau ikutan nambahin.

Tuesday, October 23rd, 2007 | Author: Riza

Bagaimana cara membuat sebuah selector grayscale-bitmap?

Kita tahu, bitmap adalah citra yang dihasilkan dari kumpulan pixel berwarna. Warna dari pixel ini berupakan perpaduan dari warna merah (R), hijau (G), dan biru (B). Intensitas yang berbeda untuk masing-masing komponen warna, ketika dicampur akan menghasilkan warna baru yang berbeda juga.

Masing-masing komponen warna memiliki intensitas dari 0 (nol) sampai 255. Sehingga jumlah warna yang berbeda yang bisa dibuat dengan mencampur komponen warna (R, G, dan B) adalah 24bit, atau setara dengan:

Continue reading

Thursday, October 11th, 2007 | Author: Riza

Beberapa hari yang lalu ada yang tanya di salah satu forum delphi, bagaimana cara membuat sebuah class yang bisa mengelola sekumpulan object baik itu object bertipe data sama maupun berbeda. Aku rasa ngga ada salahnya kalau di-share juga di sini. Pada contoh berikut, akan dibuat sebuah class TTableManager. Class ini akan mengelola sekumpulan object bertipe data TTable. Source code-nya terdiri dari 2 file, yaitu file unit berekstensi .pas, serta file project delphi berekstensi .dpr.

Continue reading

Category: Delphi  | Tags: , ,  | 2 Comments