Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Uwe Raabe,
10. Dez 2012
Das war aber auch ein bisschen Glück! Bei lokalen Variablen innerhalb Prozeduren und Funktionen kann man nicht sicher sein, daß eine Klasseninstanz immer nil ist. Deswegen wird der Aufruf von Test auch bei einigen zu einer Schutzverletzung führen.
Hier mal ein bisschen mehr zum Spielen:
type
TFoo = class
private class var
FCount: Integer;
private
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Uwe Raabe,
9. Dez 2012
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,...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Uwe Raabe,
9. Dez 2012
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.)
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Uwe Raabe,
9. Dez 2012
Ich vermute mal, daß das AfterScroll-Event vor dem DataModuleCreate ausgelöst wird (passiert, wenn das DataSet zur DesignTime auf Active gesetzt ist). Damit wäre die Instanz von MainZu noch nicht erstellt und es kommt zu der Schutzverletzung.