AGB  ·  Datenschutz  ·  Impressum  







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

Methoden/Funktionspointer

Ein Thema von sashs · begonnen am 22. Jan 2013 · letzter Beitrag vom 23. Jan 2013
Antwort Antwort
sashs

Registriert seit: 6. Jan 2013
4 Beiträge
 
#1

Methoden/Funktionspointer

  Alt 22. Jan 2013, 20:39
Hallo,

ich möchte eine MacOS-Funktion aufrufen, die einen Funktionspointer übergeben bekommt.
Wenn ich einen normalen Prozeduren-Typ (type xxx=procedure; cdecl; ) definiere funktioniert es ohne Probleme.
Wenn ich aber eine Methode übergeben möchte und ich den Typ auf "type xxx= procedure of object;cdecl;" ändere stürtzt das Programm ab.

Weiß jemand was das Problem ist?

Viele Grüße

Sascha
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: Methoden/Funktionspointer

  Alt 22. Jan 2013, 21:01
procedure of object übergibt als ersten Parameter "self", also das Objekt, das aufruft. Das wird die Funktion aus dem Tritt bringen, da nun die Parameterliste quasi um 1 nach hinten verschoben ist. Warum möchtest du die Deklaration als "of object" haben?
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
sashs

Registriert seit: 6. Jan 2013
4 Beiträge
 
#3

AW: Methoden/Funktionspointer

  Alt 22. Jan 2013, 21:18
Danke für deine Antwort.

Die Funktion die übergeben werden soll ist eine Callback-Funktion. Und jedes Objekt muss eine eigene CallbackFunktion haben, da durch diese Funktion etwas am Objekt geändert wird.

Gruß

Sascha
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: Methoden/Funktionspointer

  Alt 22. Jan 2013, 21:50
Wenn der Callback kein Sender-Objekt vorsieht, musst du das wohl oder übel über jeweils ganz eigene Prozeduren machen Wenn die Zurückgerufenen dynamisch sind, wird das aber mindestens so ekelig, wie das Assembler-Gefummel um den self-Parameter raus zu bekommen. In dem Fall wäre es ggf. sinnvoll zu überlegen, die Callbacks seriell zu gestalten. (Das wäre jedoch nur sinnvoll, wenn der Callback einmalig geschehen soll, bzw. ein sonstwie definiertes Ende hat.)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#5

AW: Methoden/Funktionspointer

  Alt 23. Jan 2013, 07:17
Das jedes Objekt 'seine' Antwort bekommt, ist kein Problem, sofern die Aufrufe serialisiert werden, d.h. vor dem N.ten Aufruf muss der N-1.te Callback erfolgt sein. Und das kontrolliert man mit einem Synchronisationsobjekt. Bei Windows wäre das ein Mutex, eine Semaphore o.ä. Bei FMX/IOS gibt es mit Sicherheit etwas adäquates.

Dem Fehlen eines 'Sender'-Objektes entnehme ich, das die IOS-Funktion nicht sonderlich robust mit Multithread-Aufrufen klar kommt, d.h. hier müsste eh synchronisiert werden.
  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 14:58 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