Originariamente inviato da mondobimbi
La catena delle chiamate a Free si sussegue ordinatamente come da me pensato dall'ultimo figlio a scendere fino all'antenato più lontano, questo lo ho verificato con il debugger. Mai la catena si è interrotta e la chiamata è stata fatta direttamente ad un genitore.
Per forza: non hai verificato il caso specifico che dà luogo a questo effetto collaterale.

Prova questo codice:

codice:
var
  Obj: TObject;

  Obj := TTBase.Create;

  // ...

  Obj.Free;
Vedrai che la chiamata al metodo Free non esegue il tuo codice, poiché il metodo Free non va modificato e non va reintrodotto, ma è necessario fare l'override del metodo Destroy.

A parte tutto, io non capisco quale sia il problema nello spostare il codice da Free a Destroy... certo, a meno che tu non voglia ritrovarti con effetti collaterali e problemi in più rispetto a quelli che dovrebbe normalmente risolvere il software. :master: