Thema: Delphi Event Handling

Einzelnen Beitrag anzeigen

Highttower

Registriert seit: 2. Jun 2009
Ort: Worms
88 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Event Handling

  Alt 22. Jun 2009, 17:37
Zitat von Apollonius:
Ich glaube, dass du eine falsche Vorstellung von einem Event hast.
Zitat:
Ich hol erst mal aus, ein Event ist irgendeine Methode die von einem (internen?) Thread gehandelt wird. Dieser ist quasi als Observer geschrieben und benachrichtigt alle die an diesem Thread hängen wenn sich eine Methode ändert.
Ein Event ist erstmal eine ganz normale Variable. Im Gegensatz zu .NET-Sprachen handelt es sich dabei also nicht direkt um ein Sprachkonstrukt. Diese Variable kann eine einzige Methode speichern. Außerdem kann diese Methode dann wieder abgerufen und aufgerufen werden. Genau das passiert irgendwo in den Innereien von TBrowser. Es handelt sich dabei nicht um irgendwelche Magie, sondern in irgendeiner Methode steht explizit FEvent('foo') o.Ä.
Jetzt sollte aber auch klar sein, warum die Zuweisung so aussehen muss, wie sie aussieht: Die Methode selbst wird nicht verändert, lediglich das Feld in der Objektinstanz erhält einen neuen Wert.
Das klingt einleuchtend, allerdings verstehe ich nicht wie. Du sagst
Zitat von Apollonius:
Außerdem kann diese Methode dann wieder abgerufen
, aber so wie ich das Verstanden wird sie aber ständig abgerufen. So kann ich z.B. wenn ich ein Event ändere von einem Server aus dem Client sagen, hier sind neue Daten angekommen(Das ist z.b. das Beispiel aus dem Buch "Delphi in a nutshell" von Ray Lischner(übrigends ne tolle sache wo alles andere super drin erklärt, wird wenn man nen bissl ahnung hat was man tun will(tut))). Also muss ja irgendetwas "magisches" über alle Events iterienen und den Objekten bescheid geben. Ich kann mir nicht vorstellen das das jedes Objekt oder jede Instanz eines Objektes autonom für sich macht. Meines Verständnisses nach ist genau dieser Zauberstab der EventHandler.

Stimmt das soweit?

Wenn ja dann find ich es nämlich verwirrend das man von den Objekten selbst auch noch die Events rufen kann.

Gruß,
Tobi

PS: Sagt mir wenn ich mich zu tief darein denke, oder wie nen Kumpel immer sagt, das ist Delphi nicht C++, was unter der Haube passiert ist hier nicht so wichtig, hauptsache es tut. -> Aber ich wüsste es halt gern
Tobi
Rechtschreib und Semikolion Fehler dürfen behalten werden.
  Mit Zitat antworten Zitat