AGB  ·  Datenschutz  ·  Impressum  







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

Mehrere Packages mit selben Units

Ein Thema von sminds · begonnen am 25. Sep 2006 · letzter Beitrag vom 3. Okt 2006
Antwort Antwort
sminds

Registriert seit: 16. Jun 2003
Ort: Südtirol
21 Beiträge
 
#1

Mehrere Packages mit selben Units

  Alt 25. Sep 2006, 16:41
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: link

lg,
sminds.
  Mit Zitat antworten Zitat
Elvis

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

Re: Mehrere Packages mit selben Units

  Alt 25. Sep 2006, 19:50
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 Hydra von RemObjects.
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
sminds

Registriert seit: 16. Jun 2003
Ort: Südtirol
21 Beiträge
 
#3

Re: Mehrere Packages mit selben Units

  Alt 26. Sep 2006, 07:52
Zitat von Elvis:
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 Hydra von RemObjects.
Kannst Du mir das bitte anhand eines Beispiels erklären?

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.
  Mit Zitat antworten Zitat
Elvis

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

Re: Mehrere Packages mit selben Units

  Alt 26. Sep 2006, 08:40
Zitat von sminds:
Kannst Du mir das bitte anhand eines Beispiels erklären?
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
Gutes Beispiel.
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
sminds

Registriert seit: 16. Jun 2003
Ort: Südtirol
21 Beiträge
 
#5

Re: Mehrere Packages mit selben Units

  Alt 26. Sep 2006, 08:43
Zitat von Elvis:
Gutes Beispiel.
Das war aber mein Beispiel

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.
  Mit Zitat antworten Zitat
Elvis

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

Re: Mehrere Packages mit selben Units

  Alt 26. Sep 2006, 08:45
Zitat von sminds:
Das war aber mein Beispiel
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".
Aber was soll dir hier Code bringen? Das ist ein rein abstraktes Problem, hat rein gar nix direkt mit dem Code in den Units zu tun, nur wie du diese aufteilst. Dein Beispiel zeitg, dass du verstanden hast was ich dir sagen wollte. Wozu jetzt noch Code?
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
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#7

Re: Mehrere Packages mit selben Units

  Alt 26. Sep 2006, 08:51
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
  Mit Zitat antworten Zitat
sminds

Registriert seit: 16. Jun 2003
Ort: Südtirol
21 Beiträge
 
#8

Re: Mehrere Packages mit selben Units

  Alt 3. Okt 2006, 14:29
Zitat von Elvis:
Zitat von sminds:
Das war aber mein Beispiel
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".
Aber was soll dir hier Code bringen? Das ist ein rein abstraktes Problem, hat rein gar nix direkt mit dem Code in den Units zu tun, nur wie du diese aufteilst. Dein Beispiel zeitg, dass du verstanden hast was ich dir sagen wollte. Wozu jetzt noch Code?
Habe es heute umgesetzt. Habe einfach ein Package mit dem Namen z.B. Admin erstellt. Dort alle Units hinzugefügt, die mehrmals verwendet werden. In allen anderen Packages habe ich in den Package-Eigenschaften unter Requires das Amin-Package hinzugefügt. Somit wird von allen Packages aus das Admin-Pack verwendet.

Gruß,
sminds.
  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 23:53 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