AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Datentyp für anonyme Methoden wie TMethod für Methoden
Thema durchsuchen
Ansicht
Themen-Optionen

Datentyp für anonyme Methoden wie TMethod für Methoden

Ein Thema von RSE · begonnen am 8. Aug 2012 · letzter Beitrag vom 9. Aug 2012
 
RSE

Registriert seit: 26. Mär 2010
254 Beiträge
 
Delphi XE Enterprise
 
#8

AW: Datentyp für anonyme Methoden wie TMethod für Methoden

  Alt 9. Aug 2012, 10:26
Wenn ich einen Event Registriere, dann übergebe ich den Handler an eine Register-Methode:
OnChangeRegister(ChangeHandler); .

Möchte ich den Event dann nicht mehr empfangen, dann rufe ich folgendes auf:
OnChangeUnRegister(ChangeHandler); .

Dabei sind verschiedene Fälle zu unterscheiden:
  1. ChangeHandler ist eine Prozedur/Funktion/Methode:
    Hier wird beim Aufruf von OnChangeUnRegister eine neue Closure erzeugt und somit der Handler nicht gefunden, um ihn zu entfernen. (ungetestet)
  2. ChangeHandler ist eine anonyme Methode:
    Hierzu müsste ich mir die anonyme Methode in einer Variable gemerkt haben, dann sollte das wohl klappen, wenn mit dem "="-Operator verglichen wird. Andernfalls müsste ich sicherstellen, dass der Handler mindestens so lange Sinn macht (auf nichts zwischenzeitlich freigegebenes zugreift), wie das Objekt mit dem Event existiert.
Insgesamt ist mir die Sache mit den Referenzen für diesen Einsatzzweck zu undurchsichtig auch in der Anwendung. Es gibt zu viel zu beachten bezüglich Gleichheit und Gültigkeit der Handler und beteiligten Objekte. Ich belasse es bei Handlern vom Typ TMethod. Dabei habe ich geringfügige Einschränkungen gegenüber Referenzen, aber das ganze bleibt performanter und durchsichtiger.
"Seit er seinen neuen Computer hat, löst er alle seine Probleme, die er vorher nicht hatte."
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz