Kesalahan yang disebabkan salah penulisan biasanya akan lebih mudah diketahui dikarenakan adanya pesan kesalahan oleh compiler secara terperinci. Tetapi kesalahan logika hanya dapat diperbaiki dengan logika pula, dengan mengubah pandangan dalam berpikir, menganalisa dan mencoba dengan logika baru.
Perlu digarisbawahi bahwa programming bukanlah ilmu menebak, setiap tindakan melalui proses analisa yang sangat indah tersusun dalam bentuk algoritma.Salah satu kesalahan logika yang sering dijumpai dalam pemrograman khususnya Delphi dan Lazarus adalah Access Violation, hal ini dikarenakan sebuah object diakses pada saat object tersebut belum tersedia. Sebagai contoh, pemanggilan form secara defaultnya adalah cukup dengan code ini.
procedure TForm1.Button1Click(Sender: TObject);
begin
form2.show;
end;
Tetapi bagaimana jika form2 adalah available form, yang artinya form2 tidak di create otomatis oleh Delphi atau Lazarus, tentunya form2 harus di create terlebih dahulu secara runtime sehingga menjadi:procedure TForm1.Button1Click(Sender: TObject);
begin
form2 := TForm2.create(self);
form2.show;
end;
Pada script di atas terlihat jelas bahwa form2 di create terlebih dahulu sebelum dipanggil, sehingga pada saat diakses form2 tersebut sudah tersedia. Hal ini tentunya akan menghindarkan dari access violation.Begitu juga halnya pada saat akan membebaskan memory, pastikan object tersebut tersedia untuk di free kan. Dalam hal tertentu Anda dapat menggunakan assigned() untuk melakukan pengecekan apakah object tersebut tersedia sebelum diakses.
procedure TForm1.Button1Click(Sender: TObject);
begin
{ cek ketersediaan object sebelum diakses }
if assigned(form2) then
form2.show;
{ jika tidak ada create }
if not assigned(form2) then
form2.create(self);
{ cek sebelum dibebaskan}
if assigned(form2) then
form2.free;
end;
Perlu digarisbawahi bahwa procedure yang saya tulis di atas hanya contoh akses object yang menyebabkan access violation. Anda dapat menjadikan ini sebagai acuan Anda dalam mendebug kesalahan pada aplikasi Anda.Jika Anda mempunyai penyebab-penyebab lain pada access violation, silahkan beri komentar dibawah, semoga dapat menjadi referensi pembaca.
1 komentar:
Wah sangat bermanfaat sob infonya :)
Untuk menuliskan Syntax: [code] code disini [/code]
Untuk menuliskan Quote: [quote] quote disini [/quote]
Berkomentarlah sesuai topik