Wie wäre es denn, wenn Du mal Gebrauch von try-finally-Blöcken machen würdest?
Delphi-Quellcode:
Dings := TDings.Create;
try
Dings.MachWas();
finally
Dings.Free;
end;
Ansonsten wird das Free nie ausgeführt, wenn zwischen Erzeugen und Freigeben eine
Exception eintritt.