AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Prozedur als Ereignis

Ein Thema von idefix2 · begonnen am 21. Okt 2013 · letzter Beitrag vom 21. Okt 2013
Antwort Antwort
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#1

AW: Prozedur als Ereignis

  Alt 21. Okt 2013, 19:55
Du kannst allerdings eine Methode (TMethod) erstellen und dabei den Zeiger auf das Objekt der Methode auf nil setzen. Dann kannst du diesen erzeugten Methodenzeiger dem OnClick zuweisen.
Wie ich bereits schrieb, geht das nicht so einfach, da Self im eax-Register übergeben wird. Kann zufällig klappen, kann aber auch böse daneben gehen, vor allem, wenn auf den Parameter „Sender“ zugegriffen wird – der wird nämlich immer nil sein. Wenn dann müsste man einen Dummy-Parameter einfügen:

procedure Callback(_Self: TObject; Sender: TObject); Aber das ist echt dirty.

Warum verfrachtest du nicht einfach deine Prozeduren in eine Klasse?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.948 Beiträge
 
Delphi 12 Athens
 
#2

AW: Prozedur als Ereignis

  Alt 21. Okt 2013, 20:21
Wie ich bereits schrieb, geht das nicht so einfach, da Self im eax-Register übergeben wird. Kann zufällig klappen, kann aber auch böse daneben gehen, vor allem, wenn auf den Parameter „Sender“ zugegriffen wird – der wird nämlich immer nil sein.
Klar ist der nil, aber böse ist an dem Vorgehen gar nichts. Ein normaler Methodenzeiger ist auch nichts anderes und genau TMethod ist genau das was die Übergabe von Self im korrekten Register bewirkt.

Sinnvoller wäre aber in der Tat objektorientiert zu arbeiten.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort


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:43 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