Jumat, 23 September 2022

Catatan Lazarus

Ketika compile debuger error pada windows 10
lazarus harus run as administrator

Error: Wrong token type: Symbol expected but { found 
ada perubahan peroperty pada komponen tertentu

Cara lihat variabel local 
View-Debug Windows-Local Variables)

Cara lihat variabel global 
View-Debug Windows-Watches , kemudian daftarkan nama variabel yg dimonitor

Error ketika akses registry HKEY_LOCAL_MACHINE
Lazarus harus dijalankan As Administrator

Project tidak dapat runing , tidak dapat membuat form
permasalahan ditemukan karena pada event ttabsheet on show ,mengakses/open tabel padahal database belum connect 

Aplikasi jadi error ketika membebaskan(free) object yg belum di create [2024-03-22]
untuk mengatasi hal ini , object yg dimaksud perlu dilakukan inisialisasi dengan nil jadi jika object belum sempat dicreate tetapi alur program berbelok pada fungsi yg terdapat perintah untuk membebaskan object aplikasi aman.

contoh:

var
    sl:TStringList;
    b:Boolean;
label
    atExit;
begin
    sl:=nil; //inisialisasi object

    b:=false;
    if not b then Goto atExit;

    sl:=TStrigList.Create;

atExit:
    sl.Free;
end;

Fungsi "DaysBetween"
fungsi "DaysBetween" tidak menghitung jumlah hari dari tanggal awal sampai tanggal akhir , tetapi mengitung jumlah hari diantara tanggal awal dan tanggal akhir.

Contoh :
DaysBetween(2024-04-01,2024-04-05) = 3

*jika ingin mneghitung jumlah hari dari awal sampai akhir maka tambahkan 2 dari hasil DaysBetween



Fungsi keyword :

override
untuk mengganti metode/procedure dengan nama yg sama di class induk

overload
untuk membuat 2 atau lebih nama procedure yg sama

virtual
untuk menentukan memanggil metode/procedure dengan nama yg sama pada class turunan meskipun bentuk/tipenya berbeda

dynamic
sama dengan keyword virtual

abstract
untuk menentukan class yg hanya diimplementasikan pada class turunan

inherited
adalah keyword yg digunakan oleh komponen turunan untuk memanggil fungsi pada komponen induk.

nb : inherited diletakkan pada baris awal constructor dan baris akhir destructor.

cara kerjanya sbb:

misalnya ada 2 class , TBuah dan TApel. TApel adalah class turunan dari TBuah

TBuah = class

public
    constructor Create(nama:string);
..
end;

TApel = class (TBuah)
published
    constructor Create(name:string;diameter:integer);
..
end;

class TBuah dan TApel masing masing memiliki procedure create , pada saat create TApel maka create TBuah akan diproses terlebih dahulu, karena TApel turunan dari TBuah. sehingga semua property dalam TBuah dimilikiTApel. akan tetapi TApel memiliki property yg tidak dimiliki TBuah dalam contoh ini adalah "diameter"

constructor Create(name:string;diameter:integer);
begin
inherited create('apel');
..
end;


Aplikasi error "Invalid Class" ketika ada fungsi yg mengakses WMI [2025-06-15]
kasus terjadi pada aplikasi FDID dan aplikasi lainya yg memiliki fungsi untuk menggunakan WMI.
.
hal ini disebabkan karena ada kerusakan pada service WMI , untuk mengatasinya adalah dengan memperbaiki repository WMI langkahnya sbb:
1.buka cmd dengan Administrator
2.stop service WMI >>> "net stop winmgmt"
3.masuk ke folder wbem >>> "cd wbem"
4.rename folder "repository" menjadi "repositoryOLD" >>> "cd repository repositoryOLD"
5.kembali ke folder System32 >>> "cd .."
6.start service WMI >>> "net start winmgmt"