AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Packages: Best Practices, Tipps und Tricks

Ein Thema von s.h.a.r.k · begonnen am 8. Jan 2011 · letzter Beitrag vom 1. Mär 2023
Antwort Antwort
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.749 Beiträge
 
Delphi 2007 Professional
 
#1

AW: Packages: Best Practices, Tipps und Tricks

  Alt 10. Jan 2011, 17:14
Wenn du ein Package in der IDE als Projekt offen hast, kannst du in den Projekt-Optionen unter Beschreibung ein LIB-Suffix angeben. Nimm mal an, das Package heißt MyPackage.dpk und das LIB-Suffux ist D15, dann wird beim Compilieren eine MyPackage.dcp und eine MyPackageD15.bpl erzeugt. Der Vorteil ist, daß man beim Required in einem davon abhängigen Package dann nur MyPackage angeben muss. Auch kann die DPR relativ leicht an eine neue Delphi-Version angepasst werden, da lediglich das Suffix geändert werden muss. Da BPLs schon mal gern im Suchpfad liegen, müssen sie für jede Delphi-Version einen anderen Namen haben. Das Suffix bewirkt dies, obwohl das Package selbst seinen Namen behält.
Ich hab mal versucht, das für ein paar meiner Packages durchzuziehen. Eines davon hat aber ein Third-Party-Package required, das diese LIB-Suffix-Funktionalität nicht nutzt. Also hätte ich je nach Ziel-IDE mal My3rdPartyCompsD11, mal My3rdPartyCompsD12, ... requiren müssen, was ich nicht hingekriegt habe. Wie würdet ihr in so einem Fall vorgehen - ein eigenes Package (mit LIB-Suffix) für die Fremdkomponenten anlegen? Oder gibt's einen Trick, dass es auch mit den Originalpackages klappt?
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.687 Beiträge
 
Delphi 12 Athens
 
#2

AW: Packages: Best Practices, Tipps und Tricks

  Alt 10. Jan 2011, 18:22
Ich hab mal versucht, das für ein paar meiner Packages durchzuziehen. Eines davon hat aber ein Third-Party-Package required, das diese LIB-Suffix-Funktionalität nicht nutzt. Also hätte ich je nach Ziel-IDE mal My3rdPartyCompsD11, mal My3rdPartyCompsD12, ... requiren müssen, was ich nicht hingekriegt habe. Wie würdet ihr in so einem Fall vorgehen - ein eigenes Package (mit LIB-Suffix) für die Fremdkomponenten anlegen? Oder gibt's einen Trick, dass es auch mit den Originalpackages klappt?
Du kannst ein Dummy-Package anlegen, daß das FremdPackage required. Da implizit verwendete Packages nicht angegeben werden müssen, reduziert sich der Änderungsaufwand auf dieses Dummy-Package.

Wenn nicht klar ist, was mit "implizit verwendet" gemeint ist: Benötigt ein Package z.B. RTL und VCL so genügt es lediglich VCL anzugeben, da dieses bereits RTL "implizit verwendet".
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.749 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Packages: Best Practices, Tipps und Tricks

  Alt 10. Jan 2011, 18:36
Du kannst ein Dummy-Package anlegen, daß das FremdPackage required. Da implizit verwendete Packages nicht angegeben werden müssen, reduziert sich der Änderungsaufwand auf dieses Dummy-Package.
Danke, probiere ich bei Gelegenheit.

Und wie gibst du das LIB-Suffix konkret an? Ich habe es damals so probiert, wie es Ray Konopka hier beschrieben hat, obwohl das nicht 1:1 geklappt hat - es gab bei mir ähnliche Probleme wie sie Lucian beschreibt, die ich allerdings WIMRE mit einer weiteren Indirektion umgehen konnte.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.687 Beiträge
 
Delphi 12 Athens
 
#4

AW: Packages: Best Practices, Tipps und Tricks

  Alt 10. Jan 2011, 23:12
Und wie gibst du das LIB-Suffix konkret an? Ich habe es damals so probiert, wie es Ray Konopka hier beschrieben hat, obwohl das nicht 1:1 geklappt hat - es gab bei mir ähnliche Probleme wie sie Lucian beschreibt, die ich allerdings WIMRE mit einer weiteren Indirektion umgehen konnte.
Ray benutzt $IFDEFs in der DPR-Datei und hat damit nach eigenen Angaben auch Probleme in der IDE. Mit seinem Build-Batch geht es zwar, man sollte die Packages aber tunlichst nicht in der IDE öffnen.

Ich gebe das LibSuffix in den Projekt-Optionen an, verwende aber eigene Verzeichnisse mit den Projekt-Dateien für die einzelnen Delphi-Versionen. Das ist sowieso kaum zu vermeiden, da z.B. die dproj-Dateien nicht abwärtskompatibel sind. Kommt nun eine neue Delphi-Version heraus, kopiere ich das Verzeichnis der letzten auf das neue, lade die Packages und ändere lediglich das Suffix und eventuell noch den DCU-Pfad. BPL- und DCP-Pfad sind eh auf die Standardwerte gesetzt und sind somit Delphi-Versions-neutral. Ein bißchen blöd ist es, wenn neue Units dazu kommen, da die in allen Delphi-Versionen nachgepflegt werden müssen. Allerdings verwende ich aktiv nicht so viele Versionen und es kommen auch nicht so häufig neue Units dazu.

Eigentlich bräuchte es eine interne Variable für das Suffix, daß vom Compiler gesetzt wird. Aternativ wäre das auch über ein OptionSet denkbar. Gibt's aber alles noch nicht.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 19:35 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