Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Sinn von DLL-Formularen (https://www.delphipraxis.net/53400-sinn-von-dll-formularen.html)

TheMiller 15. Sep 2005 15:05


Sinn von DLL-Formularen
 
Hallo,

wozu kann ich Formulare in DLLs packen? Wo ist da der Nutzen? Kann es sein, dass es vielleicht für die leichte Einbindung von Plug-Ins relativ bequem ist?

Wäre nett, wenn ihr mir mal ein paar Verwendungsbeispiele geben könntet.

Danke

HERMES 15. Sep 2005 15:51

Re: Sinn von DLL-Formularen
 
Da hast du ja einen möglichen sinn schon gefunden, aber es dient auch dazu anwendung zu modularisieren, beispielsweise.

TheMiller 15. Sep 2005 15:54

Re: Sinn von DLL-Formularen
 
In wie fern? Module sind doch Plug-Ins, oder?

Jens Schumann 15. Sep 2005 16:00

Re: Sinn von DLL-Formularen
 
Hallo,
wenn Du Formulare auslagern möchtest sind Packages besser geeignet.

Igotcha 15. Sep 2005 16:11

Re: Sinn von DLL-Formularen
 
Meine Erfahrung zu Forms in dlls ist die, dass ich auch nur einen Sinn darin sehe, sie als modale Oberflächen für Plugins zu verwenden.

Ich habe nämlich auch mal nach einer Möglichkeit gesucht, MDI-Formen auszulagern und bin dabei ganz schnell an die Grenzen von "Forms in dlls" gestoßen. Das Problem ist nämlich, dass diese dlls nicht unter dem Application-Object der Hauptanwendung laufen und es bei nicht-modalen dll-Forms dann erhebliche Probleme gibt. Z.B. kann man nicht mehr "Tabben" - verläßt man einmal die dll-Form kommt man nicht mehr per Tab auf diese zurück.

Da sind Packages die bessere Lösung.

Praktische Anwendung von dll-Forms, wie schon oben gesagt, als UI für PlugIns. Die dll erhält ein Eingangsobjekt (z.B. Grafik), bearbeitet dann das Objekt und stellt es der Hauptanwendung wieder über die Schnittstelle zur Verfügung.

Gruß Igotcha

TheMiller 15. Sep 2005 16:12

Re: Sinn von DLL-Formularen
 
Naja, bevor ich mich entschließe, sowas zu machen, muss ich erstmal wissen, wofür das gut ist, wie es zu handeln ist und welche anderen Möglichkeiten es gibt ;-)

negaH 15. Sep 2005 17:15

Re: Sinn von DLL-Formularen
 
Es gibt zwei Formen von DLL's:

1.) die normalen DLLs die somit die kompletten Sourcen der VCL jedesmal einlinken, als Plugins bekannt
2.) die Packages *.BPL und darauf aufbauen DLLs die komplett mit Packages kompiliert werden und sozusagen nur den Code + Resourcen der darin enthaltenen Forms einlinken.

Der Unterschied ist schnell erklärt an Hand eines Beispieles:

Eine Anwednung mit 30 Formularen, Druckmodulen, Datenbankzugriffen etc. pp.

als Single EXE schätzungsweise 4-8 Mb groß.
als Single EXE und jedes Foum inr eigener DLL ca. 2Mb + 30 * 1Mb jenachdem was die Forumlare so benötigen. Im WorstCase also maximal 2Mb + 30 * 4Mb = 122Mb.

Nun als Packages:

Exe ca. 40-80 Kb.
Packages für VCL, Reporte und Datenbank ca. 5-7 Mb groß.
1 Form in DLL mit Packages ca. 100Kb groß.

Macht 80Kb + 5-7Mb + 30 * 100Kb = 9-11Mb insgesamt.

Es gibt also einen klaren BreakEven ab dem sich ein packagesbasiertes modulares System in jedem Falle lohnt gegenüber einer single EXE. Nicht nur in der Größe der Binaries sondern gerade auch im Support oder Entwicklung in Teams.

Pure DLL's ohne Packages lohnen sich im Grunde niemals, das ist alles nur Getrickse und bringt immer wieder nur Ärger ein. Auch wenn jetzt einige hier einen Aufschrei des Entsetzens loslassen ;) Packages und DLL/EXE mit Packages gelinkt sind die einzigste Alternative um auch OOP konform modulübergreifend auf Klassen/globale Variablen etc. zugreifen zu können. Die "Endstelle" in diesem Konzept ist die nachladbare DLL die als alleinige Vollzugriff auf die in ihr enthaltenen Klassen und Formulare hat. Sogesehen eine zusätzliche Sichtbarkeitssufe. Alles was in Packages enthalten ist kann nun durch die EXE und diese DLLs gleichermaßen benutzt werden. Ohne Tricks etc. pp. UND es wird somit mehrfach "wiederverwendet" und nicht jedesmal eine separate Kopie in die PlugIn-DLL eingelinkt.

Gruß Hagen

TheMiller 15. Sep 2005 18:28

Re: Sinn von DLL-Formularen
 
Wow...danke für die Erklärung.

Die Anschlussfrage: Wie linke ich diese Packages ein? Gibts da ein Tutorial? Wäre nett, wenn mir da noch ein bissl auf die Sprünge geholfen werden kann.

Danke nochmals

mschaefer 23. Sep 2005 07:38

Re: Sinn von DLL-Formularen
 
Moin, moin

Da gibt es dann noch eine Argumentationsschiene:
aus dem DP ThreadForms in einer DLL erzeugen

Zitat:

Zitat von MarcoWarm
also das ist alles Möglich...
Es ist so, daß es generell nicht empfohlen wird VCL-Formulare in DLLs auszulagern, da das viel Speicher fressen soll, weil die VCL mehrfach geladen werden muss. Ich mach es trotzdem und die Programme laufen auch Anstandslos. Der offizielle Weg ist, bpl's zu benutzen. Das hab ich auch schon versucht, aber da ärgert man sich nur rum und muss dem Endkunden auch die ganzen System-BPLs von Borland mitliefern (nich so schön)

Wahrscheinlich wird man nicht alle Borland bpl´s brauchen, und man muss selbst herraussuchen welche man benötigt. Leider kann man die bpl´s nicht einfach in Unterverzeichnisse zur Exe legen (bisher ist mir kein Weg bekannt), so dass ein Anwendungsverzeichnis immer gut befüllt ist. Bei dll´s ist es möglich über das explizite Laden natürlich auch bestimmen wo diese abgelegt sind, sodaß man sein system besser strukturieren kann.

Grüße // Martin

dfried 23. Sep 2005 07:44

Re: Sinn von DLL-Formularen
 
Zitat:

Zitat von mschaefer
Leider kann man die bpl´s nicht einfach in Unterverzeichnisse zur Exe legen (bisher ist mir kein Weg bekannt), so dass ein Anwendungsverzeichnis immer gut befüllt ist. Bei dll´s ist es möglich über das explizite Laden natürlich auch bestimmen wo diese abgelegt sind, sodaß man sein system besser strukturieren kann.

Mit den Borland BPLs kann man das nicht machen, die eigenen BPLs kann man aber sehr wohl auch in Unterverzeichnisse legen und auch nur bei Bedarf laden/entladen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:33 Uhr.
Seite 1 von 3  1 23      

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