Recherche
1 connecté

  Actuellement : 0 commentaire Les Paquets

Paquets de composants

 

dernière mise à jour le : samedi 05 janvier 2002

 

Généralités

Un paquet regroupe un ensemble de composants. Ces derniers sont chargés dans Delphi uniquement au travers des paquets.

Un paquet possède

  • Un source : fichier d'extension .DPK
  • Une image binaire contenant un en tête de paquet et la concaténation de tous les fichiers DCU du paquet : fichier .DCP
  • Son paquet d'exécution, c'est à dire une dll spécifique à Delphi: .BPL

 

Examen du source d'un paquet (fichier .DPK):

Pour voir le source d'un paquet : dans l'éditeur de paquet, placez le curseur sur le mot Contains puis, click droit puis voir les sources.

package PaquetTestComposant;

{$R *.RES}
{$R 'CheminComposants\ComposantTest1.dcr'}
{$ALIGN ON}
……

{$DESCRIPTION 'Test installation de composant'}
{$IMPLICITBUILD OFF}

requires
  vcl50;

contains
  MonComposant in 'CheminComposants\ComposantTest.pas';

end.

Le paquet contient les renseignements suivants :

  • La liste des fichiers ressources utilisés (= les .dcr contenant les icones des composants )
    {$R 'SourcesComposant\MonComposant.dcr'}
  • Des directives de compilation {$ALIGN ON}
  • Clause requires : Les autres paquets nécessaires pour la compilation des composants du paquet (ici la vcl de D5 : VCL50.dcp)
  • Clause contains : Les fichiers sources des composants eux mêmes
    (MonComposant in 'CheminComposants\MonComposant.pas';)

Comme vous pouvez le voir, le paquet fait référence aux sources des composants avec le nom du fichier compris chemin relatif ou absolu.

MonComposant in 'CheminComposants\MonComposant.pas';

 

Attention aux références circulaires

Si votre paquet A contient un paquet B dans sa clause contains, le paquet B ne peut avoir le paquet A dans sa clause contains. En d'autres termes, si un des composants de votre paquet A a besoin d'un autre composant situé dans un paquet B, ce dernier ne peut avoir besoin d'un composant situé dans le paquet A sous peine de message d'erreur à la compilation. On ne peut donc pas mettre n'importe quel composant dans n'importe quel paquet. Il faut s'organiser...

 

Déplacement du fichier source d'un paquet

On vient de voir que chaque source de composant est référencé dans le paquet par son nom de fichier compris chemin. Si le chemin en question était en relatif, le déplacement du fichier source du paquet (DPK) fait que ces chemins ne sont plus justes.

Piège : vous déplacez votre paquet et si vous le chargez (fichier / Ouvrir …) il se compile bien alors qu'il ne fait plus référence correctement aux sources des composants car il se compile alors en se servant des fichiers binaires créés lors d'une ancienne compilation.

Dans l'éditeur de paquet, si vous double cliquez sur le fichier source d'un composant, il ne trouvera pas le source puisque le chemin est devenu faux.

Pour que cela fonctionne de nouveau, il faut soit retirer chaque composant puis les ajouter à nouveau, soit aller modifier le chemin dans le fichier source.

D'une façon générale, la liste des paquets de composants qui sont chargés sont dans Delphi (et qui apparaissent en faisant Composant / Installer des paquets) liste les paquets qui ont été installés dans Delphi. Lorsque l'on se place sur un des paquets et si Delphi peut avoir accès au source du paquet (au .DPK) le bouton Modifier est actif. Sinon, il est inactif.

 

 

Pour qu'il trouve le source du paquet, il faut que le dossier où il se trouve soit référencé dans les " chemins bibliothèques " (= les chemins où Delphi va chercher les sources des bibliothèques). Pour y accéder : Outils / Option d'environnement puis onglet Bibliothèque ligne Chemin bibliothèques.

Bref, si vous déplacez un fichier source d'un paquet, entrez dans ce source pour modifier les chemins et n'oubliez, pas au besoin, de rajouter le nouveau chemin du source dans l'option d'environnement.

Delphi stocke le résultat de la compilation dans une dll ayant comme extension .BPL. Si vous supprimez ce .BPL (il se trouve par défaut dans c:\Program Files\Borland\Delphi5\Projects\Bpl), le paquet ne disparaît pas de la liste des paquets mais Delphi vous signale sa disparition à l'ouverture de Delphi et il apparaît en non coché dans la liste. Les composants contenus dans ce paquet ne figurent plus dans la barre de composants.

On peut changer le chemin par défaut où Delphi place et trouve ses BPL : dans Outils / Option d'environnement puis onglet Bibliothèque ligne Destination BPL. Attention, changer le répertoire par défaut de destination des BPL et déplacer les BPL ne suffit pas lorsque l'on veut changer de dossier pour l'emplacement de ces BPL. En effet, dans la liste des paquets vos paquets sont référencés avec le chemin que vous lui aviez indiqué.

Il faut donc également "Retirer" vos paquets référencés avec un mauvais chemin et les "Ajouter" de nouveau mais avec le nouveau chemin.

 

Les paquets : passage à une nouvelle version de Delphi

Lorsque l'on passe à une nouvelle version de Delphi (par exemple de D4 à D5), les paquets ne sont plus directement utilisables car dans la partie Requires, les fichiers appelés ne sont plus bons. Par exemple, la VCL de D4 est VCL40.dcp et celle de D5 est VCL50.dcp. Il faut donc changer les paquets en conséquence et surtout ne pas vouloir se servir d'un même paquet pour 2 versions différentes de Delphi.

Dans la liste des paquets, si vous essayez de faire "ajouter" en indiquant un fichier bpl d'une ancienne version de Delphi, vous aurez un message similaire à :