AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wie Typeninfo zwischen DLL's austauschen?

Ein Thema von Mavarik · begonnen am 2. Aug 2017 · letzter Beitrag vom 3. Aug 2017
Antwort Antwort
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.157 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: Wie Typeninfo zwischen DLL's austauschen?

  Alt 2. Aug 2017, 16:32
Du musst mit Laufzeitpackages compilieren damit du Klasse in mehreren DLLs verwenden kannst.
ok, Laufzeitpackages habe ich noch nie verwendet...

Bissel dünne die Info?!
OK!

Folgende Situation:

Hauptprogramm ist D2007
DLL1 ist 10.0
DLL2 ist 10.2

DLL2 Erzeugt ein Interface als IInterface;
Hauptprogramm übergibt das Interface an DLL1.
DLL1 füllt die Member...
Hauptprogramm übergibt das Interface zurück an DLL2;

Das ist alles klein Problem....

Aber leider muss DLL1 per RTTI sich einen Setter holen und der hat im Kontext von DLL1 einen anderen Typen im Kontext von DLL2...

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.688 Beiträge
 
Delphi 12 Athens
 
#2

AW: Wie Typeninfo zwischen DLL's austauschen?

  Alt 2. Aug 2017, 17:04
ok, Laufzeitpackages habe ich noch nie verwendet...

...

Hauptprogramm ist D2007
DLL1 ist 10.0
DLL2 ist 10.2
Damit das mit den Laufzeitpackages funktioniert, müssen alle Beteiligten mit derselben Delphi-Version compiliert werden. Es bringt überhaupt nichts, wenn jeder seine eigenen Laufzeitpackages mitbringt.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.989 Beiträge
 
Delphi 12 Athens
 
#3

AW: Wie Typeninfo zwischen DLL's austauschen?

  Alt 3. Aug 2017, 05:38
Aber leider muss DLL1 per RTTI sich einen Setter holen und der hat im Kontext von DLL1 einen anderen Typen im Kontext von DLL2...
Das ist schon etwas böse. Aber ich gehe bei dir einfach mal davon aus, dass du das nicht "aus Spaß" so machst.

Wir haben ähnliche Konstellationen wie du, aber dabei casten wir die Interfaces immer auf die korrekten Typen nach der Übergabe als IInterface, nutzen also nicht wie du die RTTI für die Member. (Der Pluginmanager hat dafür eine generische Schnittstelle in beide Richtungen.)

Mir fallen drei Möglichkeiten ein, falls du beide DLLs dafür ändern kannst:
1. Wäre es vielleicht möglich TInvokeableVariantType zu verwenden? Zum Beispiel indem DLL2 zusätzlich ein weiteres Interface implementiert, das einen passenden Variant enthält, so dass du das Interface per QueryInterface dafür holen kannst? (Das habe ich zwar noch nie über DLL Grenzen hinaus gemacht, aber ich vermute, dass das klappt.)
Das wäre bei der Verwendung in DLL1 dann supereinfach.
2. Vielleicht könnte DLL2 in der Klasse auch ein weiteres Interface implementieren, das die notwendigen RTTI-Infos exponiert.
3. Gibt es irgendeine Möglichkeit an den Schnittstellen etwas zu erweitern? Ich denke da an eine zusätzliche Möglichkeit Metainformationen zu den Interfaces abzufragen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.157 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Wie Typeninfo zwischen DLL's austauschen?

  Alt 3. Aug 2017, 10:36
Danke für die Infos...

Ich denke ich muss die Routinen von DLL1 nach DLL2 verschieben...

Wird dem Kunden nicht gefallen... Ist dann aber so...

Mavarik
  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 17:00 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