![]() |
Mehrere Packages mit selben Units
Um die Applikation schlanker zu machen, habe ich die Forms nach Abteilungen in einzelne Packages
ausgelagert (z.B. Buchhaltung.bpl, edv.bpl,.. usw.) Die Packages bestehen aus einigen Formularen und aus einigen Units, die öfters verwendet werden (z.B. eine Unit translate, eine Unit dbtransaktionen), die mir die Formulare übersetzt oder den Datenbankzugriff steuert. Nun habe ich allerdings das Problem, daß ich nie 2 Packages gleichzeitig zur Laufzeit laden kann, da ich sonst die Fehlermeldung erhalte: Cannot load package 'Buchhaltung.' It contains unit 'translateunit, 'which is also contained in package 'EDV'. Nutzt ihr dafür noch zusätzlich DLLs oder ein allgemeines Package? Ich weiß zwar noch nicht genau wie ich das Umsetzen kann, jedoch sollte es gehen, finde ich es nicht unbedingt übersichtlich, wenn im Package nochmals ein Package geladen wird... Die Packages selber habe ich so erstellt: ![]() lg, sminds. |
Re: Mehrere Packages mit selben Units
Du musst sicherstellen, dass eine Unit nur einmal in ein Package kompiliert wird.
Packages, die diese Unit benutzen müsen das Package in das sie kompiliert wurde in die "requires" clause aufnehmen. Dadurch werden sie zwar von einem anderen package abhängig, aber du gewinnst auch mehr Klarheit über die Beziehungen zwischen den Modulen. Wichtig zu wissen ist, dass ein Package, dass von einem anderen Package abhängig ist, dieses mitlädt wenn es selbst geladen wird. Wenn man das für initialization/finalization beachtet, hat man ein sehr mächtiges System um einzelne Module während des Betriebes ein- und auszuklinken bzw. zu aktualisieren ohne die App beenden zu müssen. Ein sehr krasses Beispiel, das zeigt was damit möglich ist, ist ![]() |
Re: Mehrere Packages mit selben Units
Zitat:
z.B. Package EDV, existiert Unit translate Package BUCHHALTUNG, existiert Unit translate Lösung? Package ALLGEMEIN, Unit translate? Package EDV, Verweis auf Package ALLGEMEIN Package BUCHHALTUNG, Verweis auf Package ALLGEMEIN MfG, ~sminds. |
Re: Mehrere Packages mit selben Units
Zitat:
|
Re: Mehrere Packages mit selben Units
Zitat:
Kannst Du mir ein paar Zeilen Code liefern, wie ich das Package im Package nochmals aufrufe und es die anderen offenen Package nicht "stört". Danke, ~sminds. |
Re: Mehrere Packages mit selben Units
Zitat:
|
Re: Mehrere Packages mit selben Units
Packages ALLGEMEIN -> Unit Transate
Library EDV -> Formular EDV Library Buchhalrung -> Formular Buchhaltung Statt alles in Packages zu bauen, wird der komplette "Frame" der Anwendng bestehend aus allen Units die in den späteren Formular-Plugins benutzt werden sollen, in Packages integriert. Die eigentlichen Formulare/Druckmodule etc. pp. werden als DLL erzeugt die aber Packages benutzen, nämlich deine Frame-Packages und die der VCL. Die Abstraktion ist nun nochmals stärker denn Packages -> gemeinsam benutzt Library -> nicht gemeinsam benutzt Die Library als DLL in der nun dene Formulare als PlugIn drinnen sind stellen in diesem Konzept quasi Endpunkte dar. Diese Endpunkte werden und können nicht durch andere Endpunkt verwendet werden. Im Gegenastz zu einem Package exportiert so eine DLL nämlich nicht ALLE darin deklarierten Funktionen/Klassen/Datentypen als Exports. Eine solche DLL wird also enorm kompakt sein, im Gegensatz zu einem Package. Gruß Hagen |
Re: Mehrere Packages mit selben Units
Zitat:
Gruß, sminds. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:55 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