Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit Laufzeitpackages (https://www.delphipraxis.net/165027-problem-mit-laufzeitpackages.html)

Codewalker 11. Dez 2011 20:50

Delphi-Version: XE

Problem mit Laufzeitpackages
 
Folgendes Problem: Ich habe eine Anwendung, die insgesamt 5 Laufzeitpackages nutzt. Dabei enthält ein Package eine Unit mit einer zentralen ObjectList. Im Moment erzeuge ich die Liste im initialization-Abschnitt. Das Problem ist, dass die mehrfach quer über alle Packages verwendet wird und der initialization-abschnitt scheinbar mehrfach durchlaufen wird. .Deswegen scheint die Liste mehrfacz erzeugt zu werden. Wie kann man das denn vernünftig lösen?

daywalker9 11. Dez 2011 21:18

AW: Problem mit Laufzeitpackages
 
Hast Du dich schon mal mit dem Singleton-Pattern auseinander gesetzt?

Stevie 11. Dez 2011 21:51

AW: Problem mit Laufzeitpackages
 
Sicher, dass alle deine Projekte auch mit Runtime Packages kompiliert wurden? Wenn das der Fall ist, kann die initialization Section nur einmal durchlaufen werden und zwar wenn das diese Unit enthaltende Package geladen wird.

Codewalker 12. Dez 2011 07:23

AW: Problem mit Laufzeitpackages
 
Moin Stevie.

Alle Pakete sind Laufzeit only mit Ausnahme von einem, welches Komponenten enthält. Das ist auf "Entwurf & Laufzeit" (ich hoffe, dass ist kein Problem - kann ich erst heute abend testen).

Stevie 12. Dez 2011 10:35

AW: Problem mit Laufzeitpackages
 
Die Frage war eher, ob deine Anwendung gegen die Runtime Packages kompiliert ist und die Packages letztlich das Package mit dieser besagten Unit im requires haben. Sonst wird sie mehrfach einkompiliert und dann ist klar, dass der initialization Block mehrfach ausgeführt wird.

Codewalker 12. Dez 2011 10:38

AW: Problem mit Laufzeitpackages
 
Okay, da werde ich etwas tiefer wühlen müssen. Ich prüfe mal alle requires-Einträge. Die Anwendung selber lädt nur das zentrale Package (welches auch die Liste enthält). Alle anderen Packages werden dynamisch zur Laufzeit mittels LoadPackage geladen.

Codewalker 12. Dez 2011 16:51

AW: Problem mit Laufzeitpackages
 
Also, wie versprochen, hier mal das Wühlergebnis:
  • LibForms, Entwurf & Laufzeit (enthält Basisformklasse + ObjectList), erfordert keines der anderen Packages
  • LibPackages, Laufzeit, enthält Routinen für dynamisches Laden von Packages, erfordert auch kein anderes
  • LibLogging, Laufzeit, enthält ein von der Basisformklasse abgeleitetes Form und nutzt die ObjectList, erfordert LibForms.dcp
Das Hauptprogramm hat in den Projektoptionen folgende Laufzeitpackages angegeben:
  1. LibForms
  2. LibPackages
In der Projektdatei wird nach dem Application.Initialize noch LibLogging.bpl über
Delphi-Quellcode:
LoadPackage
nachgeladen.

Wenn ich durchsteppe, werden einige initialization-Abschnitte mehrfach durchlaufen und die Liste existiert zu bestimmten Zeitpunkten einfach nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:33 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