Moin!
Zitat von
maximov:
Du kannst (zur laufzeit) nur solange auf methoden, von objekten die noch nicht instanziert sind (nil), zugreiffen, wie dort nicht mit den objekt-daten gearbeitet wird! Denn dann wird faktisch nicht auf den objekt-speicher zugegriffen, nur auf den code der klasse.
Nicht ganz richtig: Der Zugriff auf nicht statische Klassenmethoden ist bei einer Instanzenvariable von Nil nicht möglich, da der Compiler automatisch Code für den Zugriff auf die
VMT erzeugt um die Adresse der Methode zu ermitteln. Somit wäre die Methodenadresse um dorthin zu springen an der Stelle hinterlegt (Instanz +
VMT Eintragsoffset) z.B. NIL+$08 - was aber dann eine EAccessViolation bei $000008 erzeugt, wenn er die Adresse holen will.
Das geht nur mit statischen Funktionen (das ist der Name in C++, Delphi nennt das Class Procedure/Function).
----
Ich vermute immernoch, das du die ganze Zeit auf Dev1 aus der
Unit zugegriffen hast, die Nil ist und in Unit2 wo die Instanz in der Dev1 vorhanden war auf die Methoden...
MfG
Muetze1