Thema: Delphi Assigned

Einzelnen Beitrag anzeigen

Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#5

Re: Assigned

  Alt 26. Aug 2004, 11:57
Hallo Sanchez,

danke für die ausführliche beschreibung, soweit hatte ich das auch schon verstanden. Ich verstehe es nur nicht wieso es in meinem beispiel benutzt wird (klar verstehe ich es das assigned da prüft ob OnFehler<>nil ist)... ich kapiers irgendwie nicht....fragen wir mal anders...wieso sollte der geprüfte methodenzeiger denn nil sein? sorgt man beim programmieren nicht sowieso vorher dafür das das ding irgendwo hinzeigt bevor man es benutzt(womit aissgned überflüssig wäre)?

Zitat:
OnFehler ist wohl ein Event. Events sind nichts weiter als Zeiger auf Methoden, die meist als Properties implementiert sind. Beim Erzeugen des Objekts existieren keine Ereignisbehandlungsroutinen, OnFehler ist also nil. Erst wenn eine Behandlungsroutine gesetzt wird (MyObject.OnFehler := MyEventHandler), ist Onfehler nicht mehr nil. Durch die Prüfung mit Assigned wird Onfehler also nur aufgerufen, wenn es auch gesetzt ist.
wer setzt denn OnFehler? ich dachte eigentlich das man das bereits in der klasse alles drin hat hm.

Zitat:
OnFehler wird ein Event der Klasse TNumEdit sein. Das heisst, es ist eine Procedure of object, die von ausserhalb erst zugewiesen werden kann ( nicht muss ).
was heisst das von ausserhalb? wenn ich z.b eine komponente habe , dann im OI irgendeinem ereignis ein code hinzufüge...ist das mit zuweisen gemeint?

Delphi-Quellcode:
Beispielsweise wie das onClick eines Buttons.
Wenn dem Ereignis keine Prozedur zugeordnet ist, ist das Event nil. Würde man versuchen eine nichtexistente Prozedur aufzurufen, gäbs ne Exception. Daher muss man das vorher prüfen.
Genau das ist irgendwie meine Frage, wieso sollte ich in meiner klasse versuchen die prozedur aufzurufen wenn sie nicht da ist. ich meinte wer tut denn das hmmm.

hab da so ne theorie... ist das so gemeint, das wenn ich bei einem button z.b kein OnClick ereignis definiert habe und dann versuche mit button1.click die procedure aufzurufen? oder wie?

danke für eure antworten
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat