[ FranjoZG @ 22.10.2020. 15:02 ] @
Delphi XE 10 Problem je što se destructor klase tMaster ne pozove. U main programu koristim interface iAdresar što je iSynhRoot, njegov propety Master i proceduru Execute. Provjerio sam u kodu, nigdje nemam npr Varijabla1 := iAdresar.Master tAdresar.fMaster: IMaster kreiram u konstruktoru tAdresar, a oslobodio bih ga u Destructoru tAdresara. Što radim pogrešno? Imam interface i klasu: Code: iMaster=interface ... end; tMaster=class(TInterfacedObject, iMaster) constructor Create; destructor Destroy; override; private ... end; iSynhRoot=interface function getMaster: iMaster; procedure setMaster(const Value: iMaster); property Master: iMaster read getMaster write setMaster; procedure Execute; end; tAdresar=class(TInterfacedObject, iSynhRoot) constructor Create(ParentForProgress: tWinControl=nil); destructor Destroy; override; private fMaster: iMaster; function getMaster: iMaster; procedure setMaster(const Value: iMaster); public property Master: iMaster read getMaster write setMaster; procedure Execute; end; ... constructor tAdresar.Create(ParentForProgress: tWinControl); // jedino mjesto gdje se kreira Master begin inherited Create; Master := tMaster.Create; ... end; destructor tAdresar.Destroy; begin Master := nil; // ovo bi trebalo pozvati destructor, ali ga ne pozove. inherited; end; |