Contents
Registry pada sistem operasi Windows adalah semacam database yang menyimpan informasi/data settingan sistem operasi dan aplikasi secara hierarki. Bisa dikatakan bahwa ‘jantung’ dari sistem operasi Windows ada di ‘Registry’ ini. Karena sifatnya yang menyimpan data secara permanen (non volatile) dalam sistem operasi iniah, maka kebanyakan aplikasi baik aplikasi bawaan Windows maupun ‘third party’ menggunakan Registry untuk menyimpan data tertentu di sana. Namun, sebaiknya Anda tetap berhati-hati dalam menggunakan Registry ini, karena jika ada kesalahan tertentu, sistem operasi Windows Anda bisa terganggu (hang) atau dalam case tertentu bisa menyebabkan crash sehingga harus diinstal ulang 🙂
Function Delphi untuk Menyimpan dan Membaca Registry
Jika Anda membuat suatu aplikasi baik itu yang shareware maupun freeware, ada baiknya Anda memanfaatkan Registry ini untuk menyimpan data settingan tertentu, misalnya password default, nilai awal suatu parameter, dan lain-lain. Berikut ini akan saya contohkan bagaimana cara menyimpan dan membaca Registry dengan Delphi XE8. Caranya cukup mudah, cukup dengan memanggil dua function sebagai berikut:
function ReadReg(Key:string;default:string='admin'):string; var Registry : TRegistry; begin Registry := TRegistry.Create; Registry.RootKey :=HKEY_CURRENT_USER; Registry.OpenKey('\software\'+nama_aplikasi,True); if registry.ValueExists(key) then readreg := Registry.readstring(key) else begin Registry.Writestring(key,default); Readreg := Registry.readstring(key); end; Registry.Free; end;
function WriteReg(Key:string;value:string):boolean; var Registry: TRegistry; begin Registry := TRegistry.Create; Registry.RootKey := HKEY_CURRENT_USER; Registry.OpenKey('\software\'+nama_aplikasi,True); registry.Writestring(key,value); result:= registry.KeyExists(key); Registry.Free; end;
Perhatikan dua function di atas, function ‘ReadReg’ digunakan untuk membaca nilai suatu registry, dengan sintaks:
ReadReg(Key:string;default:string=’admin’):string;
Perhatikan bahwa function ‘ReadReg’ di atas akan mengembalikan sebuah nilai ‘string’ ketika function ini dipanggil.
Sedangkan function writeReg, digunakan untuk menulis suatu nilai pada ‘key’ Registry tertentu. Sintaksnya adalah sebagai berikut:
function WriteReg(Key:string;value:string):boolean;
Perhatikan bahwa function ‘WriteReg’ akan mengembalikan sebuah nilai true/false (Boolean). Jika berhasil menulis sebuah nilai ke Registry, maka nilai kembalian (return value) dari function ini akan bernilai ‘true’ dan sebaliknya, jika gagal menulis nilai ke registry (entah karena ‘key’ tidak ditemukan atau tipe data salah, dll), maka return value function ini akan bernilai ‘false’.
Penggunaan Function Menyimpan dan Membaca Registry dengan Delphi XE8
Jika Anda menggunakan Delphi XE8 (atau Delphi versi lain), cara menggunakan kedua function di atas cukup mudah. Berikut ini adalah contohnya:
- Definisikan dulu nama aplikasi melalui sebuah konstanta (atau variable juga boleh. Pendeklarasian konstanta ini di atas statement ‘implementation’
const nama_aplikasi:string ='Saptaji_Apps';
- Ambil sebuah komponen TButton (Button1), kemudian isikan event handler-nya sebagai berikut:
WriteReg(‘password’,’ini_passwordku’);
Perintah di atas maksudnya adalah menuliskan password ‘ini_passwordku’ di key ‘HKEY_CURRENT_USER \ software\Saptaji_Apps\password’
- Ambil komponen TButton (Button2) dan TEdit, dan isikan event handler-nya sebagai berikut
Edit1.Text:=ReadReg(‘password’);
Maka, ketika Anda mengklik Button2 di atas maka di kotak Edit1 akan tertampil nilai pada key ‘HKEY_CURRENT_USER \ software\Saptaji_Apps\password’
Demikian sedikit tutorial bagaimana cara menyimpan dan membaca Registry dengan Delphi XE8. Cukup mudah bukan? Registry ini juga dapat Anda manfaatkan agar aplikasi Anda tidak mudah di-copy atau di-crack orang, tergantung kreativitas Anda.
a Technopreneur – writer – Enthusiastic about learning AI, IoT, Robotics, Raspberry Pi, Arduino, ESP8266, Delphi, Python, Javascript, PHP, etc. Founder of startup Indomaker.com
Bang saya ketemu kendala saat read registry dengan type “REG_DWORD” sepertinya tipe ini cara bacanya bukan dengan readstring ya, saya coba ganti readinteger juga nggak mau..
Adakah solusi??
terimakasih
Nggak jadi Bang udah ketemu solusinya
terimakasih
sip lah 🙂