Destruktoren sind in Delphi quasi als virtuelle Methode implementiert. Du hättest da auch eigentlich eine Compiler-Warnung bekommen müssen.
Hier einmal als Minimalbeispiel zum Ausprobieren:
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses System.SysUtils;
type
TMyObject = class
destructor Destroy(); {override;}
end;
destructor TMyObject.Destroy();
begin
inherited;
end;
var
myObject: TObject;
begin
myObject := TMyObject.Create();
end.