Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Assigned (OnFehler) - Test : Warum?


OZ - Di 09.01.07 21:47
Titel: Assigned (OnFehler) - Test : Warum?
Hallo zusammen,
ich habe ein kleines Verständnisproblem.
Warum muß ich, wenn ich ein Ereigniss aufrufe nochmals etwas auf assigend testen?

Delphi-Quelltext
1:
if Assigned(OnFehler) then OnFehler(Self);                    


Vielen Dank!

OnlineHelp

Quelltext
1:
Die Funktion Assigned prüft, ob ein Zeiger oder eine Prozedurvariable den Wert NIL hat (nicht zugewiesen ist).                    


alias5000 - Di 09.01.07 22:18

OnFehler ist ja nur eine Art Variable, in die später beim Verwenden der Komponente eine Prozedur reinschreibst, die ausgeführt wird. Genauer gesagt kopierst du beim Zuweisen in der Hauptanwendung

Delphi-Quelltext
1:
DeineKomponente.OnFehler := MainForm.DeineKomponenteFehler;                    

den Zeiger der Prozedur MainForm.DeineKomponenteFehler in OnFehler rein. Wenn du aber dies in der Hauptanwendung noch nicht getan hast, ist zeigt OnFehler auf keine gültige Prozedur (ist also not assigned(OnFehler).
Wenn dies so ist, darfst du natürlich nicht versuchen OnFehler auszuführen, tust du es doch, masakriert dich Delphi mit einer netten und dezenten EAccessViolation.

Gruß alias5000


OZ - Di 09.01.07 23:36

Hallo alias5000
herzlichen Dank für die Erläuterung. Jetzt verstehe ich es besser. :idea: