Zitat von
Tormentor32:
Ich habe gerade überprüft, ob der Konstruktor aufgerufen wird, das wird er definitiv, die Klasse wird beim Start des Programms instanziert und beim Beenden wird diese Instanz wieder freigegeben.
Schön, und wo wird diese Instanz abgelegt? Anscheinend woanders als du später drauf zugreifst.
Zitat von
Tormentor32:
Ich musste nur gerade feststellen, dass die SELF Variable innerhalb der Funktion nil ist, wie ist das denn möglich? Ich müsste im Falle einer Nicht-Instanzierung doch schon einen Fehler kriegen, wenn ich die Funktion aufrufe oder?
Nein, dann würde Free() als Methode bei nil auch sofort eine
Exception schmeissen anstatt die Funktionalität zu bringen, vorher Self auf Nil zu überprüfen und entsprechend zu entscheiden ob er Destroy aufruft oder nicht.
Du bekommst erst ein Problem, wenn du auf Elemente der Klasse zugreifst - wie du ja merkst. Also die Methode wird definitiv von einer nicht initialisierten Instanz aufgerufen. Entweder geschieht der Aufruf vor der Instanziierung oder du benutzt eine falsche Variable und greifst somit nicht (wie gedacht) auf die instanziierte Version zu.