AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Record über COM-Schnittstelle übergeben
Thema durchsuchen
Ansicht
Themen-Optionen

Record über COM-Schnittstelle übergeben

Ein Thema von Johannes G. · begonnen am 25. Jun 2019 · letzter Beitrag vom 26. Jun 2019
Antwort Antwort
Johannes G.

Registriert seit: 23. Aug 2017
Ort: Lustenau
16 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Record über COM-Schnittstelle übergeben

  Alt 25. Jun 2019, 16:26
Hallo,

Ich habe ein Berechnungsprogramm via ActiveX-Komponente zu einem Server gemacht. Mit einem Client-Programm kann ich den "Berechnungsserver" aufrufen und berechnungen starten- funktioniert soweit alles tadellos.
Allerdings habe ich bis zu 50 Berechnungsoptionen, die man über den Client auswählen kann. Somit müsste ich 50 Parameter dem Server übergeben...
Mein Gedanke wäre die Berechnungsoptionen in einen Record zu packen und dem Server zu senden. Allerdings bin ich bei der COM-Schnittstelle an die Standardtypen gebunden. Ist es möglich den Record in einen Standardtyp z.B. OleVariant umzuwandeln und beim Server wieder zurück in Record?
Oder kann hier irgenwie mit Pointern gearbeitet werden?

Ich bin absoluter Neuling in der Schnittstellenprogrammierung und komme hier nicht mehr weiter. Habe auch nichts im Netz gefunden das mir weitergeholfen hat. Vielleicht könnt ihr mir einen Denkanstoß oder Hinweis geben.


Gruß
Johannes
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
704 Beiträge
 
Delphi 12 Athens
 
#2

AW: Record über COM-Schnittstelle übergeben

  Alt 25. Jun 2019, 18:10
Hallo,

Ich habe ein Berechnungsprogramm via ActiveX-Komponente zu einem Server gemacht. Mit einem Client-Programm kann ich den "Berechnungsserver" aufrufen und berechnungen starten- funktioniert soweit alles tadellos.
Allerdings habe ich bis zu 50 Berechnungsoptionen, die man über den Client auswählen kann. Somit müsste ich 50 Parameter dem Server übergeben...
Mein Gedanke wäre die Berechnungsoptionen in einen Record zu packen und dem Server zu senden. Allerdings bin ich bei der COM-Schnittstelle an die Standardtypen gebunden. Ist es möglich den Record in einen Standardtyp z.B. OleVariant umzuwandeln und beim Server wieder zurück in Record?
Oder kann hier irgenwie mit Pointern gearbeitet werden?

Ich bin absoluter Neuling in der Schnittstellenprogrammierung und komme hier nicht mehr weiter. Habe auch nichts im Netz gefunden das mir weitergeholfen hat. Vielleicht könnt ihr mir einen Denkanstoß oder Hinweis geben.


Gruß
Johannes
Es ist zwar nicht unmöglich, eine Art record per COM/OLE zu übergeben, aber es ist komplex, weil das Ganze ursprünglich für VB user-defined types konzipiert wurde und Delphi da, soweit ich mich entsinne, keinen äquivalenten Support bietet. Was aber ziemlich einfach ist, ist ein weiteres COM-Objekt mit einem entsprechenden Interface zum Server hinzuzufügen, das einfach für jedes Feld des Records entsprechende Setter und Getter-Methoden anbietet, unter Verwendung OLE-kompatibler Datentypen. Das kann von jedem COM Client verwendet werden.

Das hört sich schlimmer an als es ist, mit ein Bißchen regular expression search und replace kann man das Interface so halbautomatisch aus der Recorddeklaration erzeugen.

Wenn Du sowohl Client als auch Server kontrollierst kannst Du natürlich auch einfach den Record 1:1 in einen variant array of byte kopieren, diesen Variant als Parameter übergeben und den Record "auf der anderen Seite" wieder aus dem array extrahieren. Dafür müssen beide Seiten den Record-Typ kennen, und der Record darf nur value-typen enthalten, keine reference-typen wie String oder dynamische arrays.
Peter Below
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Record über COM-Schnittstelle übergeben

  Alt 25. Jun 2019, 19:40
Hallo,
schau mal hier, viell. hilft dir das.

http://www.delphigroups.info/2/7/743670.html
Heiko
  Mit Zitat antworten Zitat
Johannes G.

Registriert seit: 23. Aug 2017
Ort: Lustenau
16 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Record über COM-Schnittstelle übergeben

  Alt 26. Jun 2019, 08:07
Vielen Dank für euere Hilfe!
Ich habe es mit OleVariant Lösung realisiert.

Funktionen für die Typenumwandlung habe ich hier gefunden:

http://www.delphigroups.info/2/72/273626.html
  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 02:53 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