AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Funktionszeiger an COM-Server übergeben
Thema durchsuchen
Ansicht
Themen-Optionen

Funktionszeiger an COM-Server übergeben

Ein Thema von MatthiasR · begonnen am 14. Jul 2009 · letzter Beitrag vom 14. Jul 2009
Antwort Antwort
MatthiasR

Registriert seit: 21. Apr 2005
193 Beiträge
 
#1

Funktionszeiger an COM-Server übergeben

  Alt 14. Jul 2009, 08:26
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:
type TAufrufFunktion = function(P1, P2, P3: string): string; 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?
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
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Funktionszeiger an COM-Server übergeben

  Alt 14. Jul 2009, 08:39
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
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
MatthiasR

Registriert seit: 21. Apr 2005
193 Beiträge
 
#3

Re: Funktionszeiger an COM-Server übergeben

  Alt 14. Jul 2009, 08:56
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:
...die Du dann einfach aufrufen kannst...
? Bzw. WER ruft da was auf? Der COM-Server oder der COM-Client?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Funktionszeiger an COM-Server übergeben

  Alt 14. Jul 2009, 09:18
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
MatthiasR

Registriert seit: 21. Apr 2005
193 Beiträge
 
#5

Re: Funktionszeiger an COM-Server übergeben

  Alt 14. Jul 2009, 09:30
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?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Funktionszeiger an COM-Server übergeben

  Alt 14. Jul 2009, 09:44
Zitat von MatthiasR:
Gibts da irgendwo ein Tutorial oder sowas?
Bei Google suchencom Delphi Event sink

Oder du besorgst dir das Buch von A. Kosch: COM/DCOM/COM+
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
MatthiasR

Registriert seit: 21. Apr 2005
193 Beiträge
 
#7

Re: Funktionszeiger an COM-Server übergeben

  Alt 14. Jul 2009, 09:59
Zitat von Bernhard Geyer:
Oder du besorgst dir das Buch von A. Kosch: COM/DCOM/COM+
...das wir sogar bereits im Haus haben und in dem ich gerade das im Buch nicht abgedruckte Kapitel 8 "Callback vs. Connection Points" auf CD nachgeschlagen habe. Der Weg über so ein Callback-interface, den auch der Herr Kosch da favorisiert, scheint genau das zu sein, was ich mir da vorgestellt hatte. Das werde ich dann mal ausprobieren.

Vielen Dank!
  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 18:34 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