Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Objektmethode extern aufrufen (ohne of object) (https://www.delphipraxis.net/60794-objektmethode-extern-aufrufen-ohne-object.html)

xaromz 12. Jan 2006 11:05


Objektmethode extern aufrufen (ohne of object)
 
Hallo,

ich würde gerne einer DLL eine Methode übergeben, die dann aus der DLL aufgerufen wird. Meine DLL-Schnittstelle sollte aber universell sein und nicht auf Delphi beschränkt. Deshalb meine Frage: Kann ich eine Variable definieren, die eine Methode aufnimmt, ohne "of object" zu verwenden, also die implizite Objektreferenz explizit implementieren? Wie kann ich diese Prozedur (ist ja dann in der DLL keine Methode mehr :zwinker: ) aufrufen?

Gruß
xaromz

tomsel 12. Jan 2006 11:30

Re: Objektmethode extern aufrufen (ohne of object)
 
Delphi-Quellcode:
Kann ich eine Variable definieren, die eine Methode aufnimmt,

1. Eine methode kannst du nur sinvoll aufrufen, wenn die entsprechende Objektreferenz bekannt ist.

2. Vieleicht würde es funktionieren, wenn man an erster Stelle der Parameterliste einen Pointer für die Objektreferenz einfügt? Denn das ist genau der prinzipielle Unterschied zwischen einer "normalen" Prozedur und einer Methode. Diese Objektreferenz muss, wie gesagt, beim Aufruf übergeben werden. Andernfalls hängt es nur von der Implementierung der aufgerufenen Methode ab, welche AV's auftreten bzw. was funktioniert und was nicht.

Das ist sehr allgemein, aber hoffentlich bringt es dich trotzdem irgendwie weiter.

Gruß tomsel

xaromz 12. Jan 2006 11:47

Re: Objektmethode extern aufrufen (ohne of object)
 
Hallo,

danke für die Antwort. Ich habs inzwischen selbst rausbekommen:

Hauptprogramm:
Delphi-Quellcode:
DLL.Setup(MeineMethode);
DLL:
Delphi-Quellcode:
type
  TProc = procedure(const Obj: Pointer; I: Integer);

procedure Setup(const Proc: TProc; Obj: Pointer);
begin
  Proc(Obj, 32);
end;
Gruß
xaromz


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:38 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