AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [FreePascal] Ereignisse an Komponenten knüpfen
Thema durchsuchen
Ansicht
Themen-Optionen

[FreePascal] Ereignisse an Komponenten knüpfen

Ein Thema von xZise · begonnen am 22. Jun 2008 · letzter Beitrag vom 22. Jun 2008
Antwort Antwort
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

[FreePascal] Ereignisse an Komponenten knüpfen

  Alt 22. Jun 2008, 16:55
Hallo DP,
ich habe ein Problem mit Free Pascal: Und zwar wie kann ich Ereignisse an Komponenten knüpfen?

Ich habe es in Delphimanier versucht, allerdings meint er dass nicht genügend Parameter genannt wurden?
FUDP.OnRecieve := FUDPRecieve; MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
1234588

Registriert seit: 14. Jan 2007
Ort: Stuttgart
164 Beiträge
 
#2

Re: [FreePascal] Ereignisse an Komponenten knüpfen

  Alt 22. Jun 2008, 17:23
FUDPRecieve muss eine methode einer klasse sein und muss als pointer uebergeben werden
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: [FreePascal] Ereignisse an Komponenten knüpfen

  Alt 22. Jun 2008, 17:36
Im Zweifel könntest du es auch mal mit einem @ versuchen - Delphi erfordert das nur bei Funktionszeigern.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
1234588

Registriert seit: 14. Jan 2007
Ort: Stuttgart
164 Beiträge
 
#4

Re: [FreePascal] Ereignisse an Komponenten knüpfen

  Alt 22. Jun 2008, 17:58
Zitat von Apollonius:
Im Zweifel könntest du es auch mal mit einem @ versuchen - Delphi erfordert das nur bei Funktionszeigern.
wie gesagt, muss als pointer uebergeben werden. wie das nun genau gemacht wird, ist imho egal (@, Addr(), TNotifyEvent oder ggf ein anderer typ).

das finde ich an delphi etwas doof. auch bei zeigern die auf records zeigen muss nicht unbedingt dereferenziert werden, fpc ist da schon etwas genauer ;)
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#5

Re: [FreePascal] Ereignisse an Komponenten knüpfen

  Alt 22. Jun 2008, 18:05
Cool! Mit "@" meckert er nicht mehr herum! Danke!

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: [FreePascal] Ereignisse an Komponenten knüpfen

  Alt 22. Jun 2008, 18:09
Es gibt aber das Problem, dass man TKlasse.Methode sowohl als Funktions- als auch als Methodenzeiger interpretieren kann, bei letzterem eben mit Instanz (manchmal wird das dann auch als gebundener Methodenzeiger bezeichnet, im Gegensatz zu dem, was ich oben Funktionszeiger genannt habe, was aber eigentlich ein ungebundener Methodenzeiger ist), und es nicht ganz einfach ist, da eine vernünftig unterscheidbare Syntax zu finden. Bei Delphi hat man sich eben für ein @ beim ungebundenen und kein @ beim gebundenen entschieden.
Besonders haarig wird es bei Klassenmethoden, die in Delphi ebenfalls gebunden und ungebunden auftauchen können - da könnte dann p := @TKlasse.Klassenmethode je nach dem Typen von p zwei verschiedene Bedeutungen haben, wenn nicht dass @ beim Methodenzeiger verboten wäre. Auf diese Weise hat man zwar ein anderes Problem am Hals, nämlich dann, wenn kein @ gegeben ist, aber aus dem Kontext sollte sich leicht ergeben, ob auf den Methodenzeiger oder das Ergebnis zurückgegriffen wird.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#7

Re: [FreePascal] Ereignisse an Komponenten knüpfen

  Alt 22. Jun 2008, 18:29
Ich versteh das nicht so richtig Aber ich versuche mal es in meinen Worten zusammenzufassen:

Das Problem mit dem "@" ist, dass man nicht weiß ob der Zeiger auf die Methode gemeint ist, oder, wenn es eine Funktion ist, der Rückgabewert der Methode.

Ist das korrekt wiedergegeben? Naja, da es eine "procedure" ist, ist das kein Problem.

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: [FreePascal] Ereignisse an Komponenten knüpfen

  Alt 22. Jun 2008, 18:33
Nein, du kannst keine Adresse eines Rückgabewertes nehmen. Der Punkt ist, dass du eine parameterlose Methode ohne Rückgabewert entweder als procedure(Self: TIrgendwas) (ungebundener Methodenzeiger, auch wenn du in Delphi nur Pointer nehmen darfst, wenn du nicht castest) oder als procedure of object (gebundener Methodenzeiger) interpretieren kannst.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  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 01:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz