Autor Beitrag
OZ
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Di 09.01.07 21:47 
Hallo zusammen,
ich habe ein kleines Verständnisproblem.
Warum muß ich, wenn ich ein Ereigniss aufrufe nochmals etwas auf assigend testen?
ausblenden Delphi-Quelltext
1:
if Assigned(OnFehler) then OnFehler(Self);					


Vielen Dank!

OnlineHelp
ausblenden Quelltext
1:
Die Funktion Assigned prüft, ob ein Zeiger oder eine Prozedurvariable den Wert NIL hat (nicht zugewiesen ist).					
alias5000
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2145

WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
BeitragVerfasst: 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
ausblenden 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

_________________
Programmers never die, they just GOSUB without RETURN
OZ Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Di 09.01.07 23:36 
Hallo alias5000
herzlichen Dank für die Erläuterung. Jetzt verstehe ich es besser. :idea: