Siehe Screenshots im Anhang. Zu Beachten sei an dieser Stelle im Screenshot MadExcept2.png die Zeilennummern, die bei der
Unit u_daten ausgegeben werden. Diese u_daten hat gar nicht so viele Zeilen.
Da steht zwar u_daten und Zeile 6703, aber die Funktion ist klar angegeben mit der Notify-Methode der generischen Liste. Und darauf bezieht sich auch die Zeilennummer.
Du wirst wahrscheinlich ein Objekt haben, was aber schon freigegeben ist - warum gilt es zu untersuchen - und noch als Dangling Pointer in der Liste steckt.
Das Freigeben über den Listenautomatismus oder die Erzeugung von Virtual Nodes aus diesem kaputten Objekt führt dann bei dir dann zu Problemen.
Übrigens kannst du auch ganz wunderbar sowas schreiben:
if MyObject is TPassword then
anstatt
if MyObject.Classname = TPassword.Classname then