![]() |
Funktionszeiger an COM-Server übergeben
Ich weiß nicht, ob ich mit einer COM-Frage im Unterforum "Windows API / MS.NET Framework API" richtig bin. Wenn nein, bitte verschieben.
Ich möchte ein neues Programmmodul gerne als COM-Server realisieren, da es, wenn es fertig ist, vielleicht auch mal separat vertrieben und von anderen Hostanwendungen angesteuert werden soll. Das Programmmodul bringt seine eigene Datenbank mit, in die es seine Daten abspeichert. Außerdem soll es an gewissen Stellen möglich sein, Daten vom aufrufenden Programm abzurufen bzw. Aktionen im aufrufenden Programm zu bewirken (letzteres also ähnlich einem Event). Der COM-Server soll also ebenfalls - in rudimentärer Form - auf den COM-Client zugreifen können. Ich hatte mir das so vorgestellt, dass der COM-Client dem COM-Server eine Art Funktionszeiger übergeben kann und die Implementation der Funktionen dann selbst übernimmt. Die Schnittstelle der Funktion (Parameter + Rückgabetyp) müsste dann halt auf beiden Seiten bekannt sein. In einer "normalen" Delphi-Anwendung funktioniert das ja prima über Funktionstypen:
Delphi-Quellcode:
Nur wie funktioniert das über die COM-Schnittstelle hinweg? Gibt es da irgendwelche COM-Datentypen, die genau dafür vorgesehen sind? Oder welcher Weg würde sich da als Lösung anbieten?
type TAufrufFunktion = function(P1, P2, P3: string): string;
Oder wäre mein Lösungsansatz gar nur auf Delphi-Hostanwendungen beschränkt, weil es in anderen Programmiersprachen so etwas wie Funktionszeiger bspw. gar nicht gibt??? Danke im Voraus für eure Tipps :thumb: |
Re: Funktionszeiger an COM-Server übergeben
Hallo,
ich würde da im COM-Kontext bleiben. Der COM-Server übergibt dem Client ein von Dir vorgegebenes (COM-)Interface; in diesem ist die Funktion definiert, die Du dann einfach aufrufen kannst. Gruß xaromz |
Re: Funktionszeiger an COM-Server übergeben
Ich hab dich nun so verstanden, dass der COM-Server dem COM-Client ein COM-Interface zu Verfügung stellt (so wie es in COM ja Gang und Gäbe ist), das der Client verwendet und dessen Funktionen er aufruft. Mir gehts aber darum, dass der Server etwas aufrufen kann, das er vom Client zu Verfügung gestellt bekommt. Also quasi umgekehrt...
Welche Seite meinst du denn nun genau mit Zitat:
|
Re: Funktionszeiger an COM-Server übergeben
Stich-/Schlagwort wäre hier ein Event Sink. Der Client muß ein COM-Interface implementieren dessen Schnittstelle der Server vorgegeben hat. Beim Anlegen eines COM-Interfaces in Delphi wird doch teilweise angeboten gleich eine Eventschnittstelle mit zu definieren.
|
Re: Funktionszeiger an COM-Server übergeben
Ich hätte vielleicht vorher sagen sollen, dass ich kein COM-Experte bin und dies mein erstes richtiges Projekt ist, das ich gerne als COM-Server implementieren würde.
--> Ich habe bereits im Typbibliothek-Editor nach einem Weg gesucht, Events zu definieren. Habe aber nichts gefunden. Kannst du mir weiterhelfen? Was muss ich genau machen, um eine solche Eventschnittstelle zu definieren? Gibts da irgendwo ein Tutorial oder sowas? |
Re: Funktionszeiger an COM-Server übergeben
Zitat:
![]() Oder du besorgst dir das Buch von ![]() |
Re: Funktionszeiger an COM-Server übergeben
Zitat:
Vielen Dank! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 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