Wie wäre es mit "defensiven Programmieren".
Also zuerst mal alles in Frage stellen und beweisen, dass alle OK ist:
Delphi-Quellcode:
....
Assert(Assigned(self)); // wir sind innerhalb einer Methode; also darf self nicht NIL sein
Assert(Assigned(xxx));
Assert(Assigned(xxx.instance));
if xxx.Instance is TEineKlasse then
...
Natürlich muss die Compiler-Option "Assertions" aktiv sein.
Diese Assert-Anweisung sollten im gesamten Sourcecode an strategischen Stellen eingebaut werden.