AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Objekt-Austausch zwischen EXE und DLL > wann möglich?
Thema durchsuchen
Ansicht
Themen-Optionen

Objekt-Austausch zwischen EXE und DLL > wann möglich?

Ein Thema von Pfoto · begonnen am 19. Okt 2007 · letzter Beitrag vom 20. Okt 2007
Antwort Antwort
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#1

Objekt-Austausch zwischen EXE und DLL > wann möglich?

  Alt 19. Okt 2007, 23:31
Hallo zusammen!

ich arbeite von Zeit zu Zeit an einer kleinen Anwendung,
die bisher auf BPLs aufgebaut ist.

Da ich jedoch gerne auch DLLs einsetzen möchte, ist meine
Frage, unter welchen Umständen ich Objekte austauschen kann.

Ich habe gelesen, dass es eigentlich problematisch ist,
da die EXE und DLL verschiedene Speicherbereiche benutzt.

In Sakuras eindruckvollem DLL-Tutorial sehe ich aber, dass
die Zeiger der Objekte scheinbar ohne Probleme weitergereicht
werden (z.B. wird das Hauptmenü über das PlugIn geändert).
Liegt das nun an der Unit ShareMem oder wie ist das zu begründen?


Für etwas Erhellung wäre ich Euch dankbar.


Gruß
Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Objekt-Austausch zwischen EXE und DLL > wann möglich?

  Alt 20. Okt 2007, 00:26
Du kannast links auf mein Profil klicken und dort auf "alle Beiträge von ...".
In der darauf folgenden Seite siehst du rechts oben eine filter box wo du "dll interfaces" rein tippst.
Nun solltest du alle meine Beiträge zu dem Thema sehen können, ich habe es hier oft genug gepredigt, man sollte also genug zum Lesen finden können.

btw: Interfaces sind eine Möglichkeit um OO-Semantiken jenseits von Modul- Compilergrenzen benutzen zu können.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Objekt-Austausch zwischen EXE und DLL > wann möglich?

  Alt 20. Okt 2007, 09:15
Moin Elvis,

ich habe mich wirklich vorher der Suche bedient und Dein Name kam
auch oft in den Beiträgen vor

Ein Zitat von dir:
Zitat:
"Delphi Interfaces erfüllen die COM-Pflichten, sie sind also binär kompatibel zueinander.
Auch wenn du sie in 2 Binaries kompilierst (Deine Echse und die DLL). "
Das was ich nicht verstehe:
In dem PlugIn-Modell von Sakura gibt es ja keine echten Interfaces, sondern nur
abstrakte Klassen als Schnittstelle.

Oder ist hier nur die Hauptsache, dass die Objekte in der gemeinsam Verwendeten
Schnittstellen-Unit definiert wurden?
Daher auch meine Frage, ob ShareMem zudem dafür sorgt, dass die Übergabe
der Objekte reibungslos funktioniert -- zumindest zwischen EXE und DLL, die mit
der selben Delphi-Verison kompiliert wurden.


Ich würde es halt gerne verstehen, auch wenn ich sozusagen auf die sicheren
echten Interfaces setzten könnte. Wobei es mir nicht unbedingt auf Kompatibilität
zu anderen Versionen oder Programmiersprachen ankommt.

Denn der Nachteil bei meiner jetztigen BPL-Lösung ist, dass es
allein wegen der Fremdbibliotheken extrem viele Dateien geworden sind,
die ich alle mitliefern müsste. Dabei soll mein Programm nur ein kleines
Tool sein, dass längst nicht alle Funktionalitäten der Bibliotheken benötigt.
Also praktisch mit Kanonen auf Spatzen geschossen...


Gruß
Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Objekt-Austausch zwischen EXE und DLL > wann möglich?

  Alt 20. Okt 2007, 09:17
Interfaces sind ja eine besondere Form von abstrakten Klassen.
Ich hab das früher auch mit abstrakten Klassen und Dlls gelöst, geht natürlich auch.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Objekt-Austausch zwischen EXE und DLL > wann möglich?

  Alt 20. Okt 2007, 09:35
Zitat von Pfoto:
Denn der Nachteil bei meiner jetztigen BPL-Lösung ist, dass es
allein wegen der Fremdbibliotheken extrem viele Dateien geworden sind,
die ich alle mitliefern müsste.
Du kannst doch angeben was als BPL eingebunden wird und was in die Exe kompiliert wird.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Objekt-Austausch zwischen EXE und DLL > wann möglich?

  Alt 20. Okt 2007, 10:03
Zitat von Bernhard Geyer:
Du kannst doch angeben was als BPL eingebunden wird und was
in die Exe kompiliert wird.
Ja, aber aus nahezu jeder Bibliothek werden Funktionen auch von den PlugIns benötigt,
so dass ich so gut wie nichts in die EXE einkompilieren kann.

Aber wie ich eben beim ausprobieren festgestellt habe, haben die DLLs nun den
Nachteil, dass sie sehr groß werden können und es ebenso ineffizient ist,
Code mehrfach in verschiedenen DLLs zu besitzen.

Die perfekte Lösung wird es wohl nicht geben, da bleibe ich wohl
der Einfachheit halber bei meinem BPLs...
Vielleicht kann ich ja gezielt nur die benötigten Units zu einer großen
BPL zusammenfassen, mal sehen.


Gruß
Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Objekt-Austausch zwischen EXE und DLL > wann möglich?

  Alt 20. Okt 2007, 12:16
Zitat von mkinzler:
Interfaces sind ja eine besondere Form von abstrakten Klassen.
Ich hab das früher auch mit abstrakten Klassen und Dlls gelöst, geht natürlich auch.
Aber nur mit dem gleichen Compiler kompiliert, richtig?
Interfaces erlauben, im Gegensatz zu abstrakten Klassen, aber auch is/as (da nicht an den Typ sondern an die GUID gebunden), und Versionierung.
Ich kann ja mal die Tage etwas zu dem StringList-DLL-Thread von letztlich basteln[1] und in die Codelib stellen.
Falls jmd. Interesse hat und ich es bis Montag verpeilt habe: einfach so lange per PN nerven, bis ich es gemacht habe.

[1] Hatte ja schon etwas Sauce vorbereitet
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  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 08:31 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