Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Konfiguration von Packages (Designtime & Runtime) (https://www.delphipraxis.net/213037-konfiguration-von-packages-designtime-runtime.html)

Sisko 12. Mai 2023 10:34

Konfiguration von Packages (Designtime & Runtime)
 
Für eine Komponente haben wir ein Runtimepackage (RTP) das auch zum kompilieren/linken verwendet wird.
Es wird auch ausgeliefert und als BPL-Ausgabeordner ist daher das Applikationsausgabeverzeichnis angegeben, nicht '$(BDSCOMMONDIR)'!!

Das zur Komponente gehörige Designtimepackage (DTP) wird im üblichen Ordner '$(BDSCOMMONDIR)\bpl' abgelegt.

Fall A:
Da das Designtimepackage das Runtimepackage benötigt, müsste dieses über die PATH-Variable zu finden sein, was natürlich nicht der Fall ist.
Daher wird das RTP (Win32) über ein Build-Event zusätzlich nach '$(BDSCOMMONDIR)\bpl' kopiert. (Das Verzeichnis ist Bestandteil des Suchpfads)

D.h. die IDE verwendet DTP & RTP aus '$(BDSCOMMONDIR)\bpl' die Anwendung jedoch das RTP aus seinem eigenen Applikationsordner.

Fall B:
Als alternative konfigurieren wir das DTP so, dass es das RTP nicht benötigt und dafür selbst auch alle notwendigen Quelldateien referenziert.
So haben wir zwei Packages welche dieselben Units enthalten.

Aufgrund eines "Conditional Defines" im DTP-Projekt implementieren die Units einzelne Blöcke anders als das RTP, daher haben wir das DCU-Ausgabeverzeichnis der beiden Projekte unterschiedlich gesetzt.

Nach dieser langen Erklärung nun meine Fragen:

1. Ist das Duplizieren der RTP (Fall A) zulässig, oder können sich dadurch (z.B. beim Debuggen) Probleme ergeben?

2. Wie verhält es sich mit Units die sowohl im DTP als auch im RTP vorkommen (Fall B), ist das zulässig?

3. Wie lautet eure Empfehlung für den Umgang mit RTP und DTP Packages?
Die Anwendung verwendet RTPs!

Uwe Raabe 12. Mai 2023 10:57

AW: Konfiguration von Packages (Designtime & Runtime)
 
Ist natürlich alles Geschmackssache, aber Ansatz 2 halte ich für fraglich.

Bei Ansatz 1 würde ich standardmäßig die BPL im CommonDir ablegen und nur für die Auslieferung (Setup) die Runtime BPL beilegen. Damit bleibt auf dem Entwicklersystem nur eine BPL und es gibt keine Komplikationen, wenn diese in der IDE neu kompiliert wird und dafür die Design-BPL ja entladen werden muss.

himitsu 12. Mai 2023 12:16

AW: Konfiguration von Packages (Designtime & Runtime)
 
DesignTimePackages (welche in der IDE registriert werden) müssen nicht in $(BDSCOMMONDIR) liegen.

Design und Runtime kann also im "selben" eigenen Verzeichnis liegen (bei Rausgabe der Anwendung könnte man das DesignPackage ignorieren / nicht mitgeben)



ABER, lädt ein Package ein Anderes (require), dann muß dieses Andere in einem Suchpfad stehen. (weil Requires steht als IMPORTS in der PE und Windows sucht nur im FileDir+WorkDir+DLLSearchPath+PATH ... leider registriert Delphi die Verzeichnisse der registrierten Packages, welche nicht in PATH stehen, nicht als DLL-Suchpfad im Windows :wall:)
PS: Es muß nicht das globale PATH sein ... kann es auch in der IDE das PATH mit
Delphi-Quellcode:
C:\Eigenes;%PATH%
überschreiben. (%PATH% nicht $(PATH), weil kann sich zur Laufzeit nicht mit sich selber ergänzen)

Tools > Optionen > IDE > Umgebungsvariablen
bzw. HKEY_CURRENT_USER\SOFTWARE\Embarcadero\BDS\22.0\Environment Variables\


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