Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#11

AW: Record-Variable in Klasseninstanz setzen

  Alt 9. Dez 2012, 23:36
Außerdem würden, wenn deine Vermutung zuträfe, auch die anderen Proceduren wie z.B. Set_StatusBar, die ja funktionieren, eine Zugriffsverletzung auslösen.
Nicht zwingend! Solange diese Methoden keine Felder der Instanz ansprechen, funktionieren die auch wenn die Instanz nicht initialisiert ist. (Wobei man sich dann aber fragen muss, warum sie nicht als Klassenmethoden realisiert sind bzw. überhaupt zu der Klasse gehören.)
Set_StatusBar gehört zur Klasse TMain_Zugriff, wie du im ersten Code-Fenster meines ersten Postings leicht feststellen kannst ...
Ich hatte nichts anderes behauptet. Es ist nur so, daß eine (nicht virtuelle) Methode einer Klasse nur dann eine initialisierte Instanz der Klasse benötigt, wenn sie auch auf Felder der Instanz zugreift. Würde die Methode z.B. lediglich ein MessageBeep aufrufen, dann funktioniert das auch wenn kein Create aufgerufen wurde. Die Tatsache, daß der Aufruf einer Methode einer Instanz funktioniert, heißt nicht zwingend, daß die Instanz initialisiert ist. Das kann man erst wissen, wenn man die Implementation der Methode kennt.

Übrigens: ein recht bekanntes Beispiel ist die Methode Free, die man auch aufrufen kann, wenn die entsprechende Instanzvariable nil ist.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat