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:
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;