![]() |
Record über COM-Schnittstelle übergeben
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 |
AW: Record über COM-Schnittstelle übergeben
Zitat:
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. |
AW: Record über COM-Schnittstelle übergeben
|
AW: Record über COM-Schnittstelle übergeben
Vielen Dank für euere Hilfe!
Ich habe es mit OleVariant Lösung realisiert. Funktionen für die Typenumwandlung habe ich hier gefunden: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:25 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