I. Introduction▲
Dès que j'ai obtenu la nouvelle version de DELPHI, DELPHI 2005 WIN32, je me suis empressé de lui donner tout mon ancien code à dévorer, à savoir un peu plus de 500 000 lignes. Il faut dire qu'ils ont bien fait les choses chez BORLAND et que 95 % de mon code est passé comme une lettre à la poste. Pour les 5 % restant, 25 000 lignes, il a fallu revoir l'utilisation de certains composants n'étant plus supportés par la version 2005. Ce qui m'a pris un mois au moins. Dans mes recherches sur le portage des composants, j'ai remarqué que les composants du GLScene7 n'ont pas été mis à jour par leurs auteurs, du fait de leur hésitation entre DELPHI 2005 .NET et WIN32.
J'ai donc décidé de prendre les choses en main et de ne pas laisser mourir, ce qui selon moi est le plus merveilleux et le plus puissant des composants créés pour DELPHI. Vous trouvez que j'exagère, peut-être, mais essayez pour voir.
II. GLScene9▲
Dans cet article je suis parti de la version stable V091A2 de GLScene7, cette version stable est disponible sur le site de SourceForge ici :
http://sourceforge.net/project/showfiles.php?group_id=29749
Deux méthodes sont possibles :
- la laborieuse en repartant du GLScene7 et en effectuant la suite des explications ;
- la seconde en installant directement
Serveur 1 mon source ici :-)
Serveur 2 mon source ici :-)
Puis sautez directement à la section « III-E. Installer le paquet ».
III. Installer et compiler le paquet▲
Télécharger la version de GLScene7 et décompresser les fichiers dans un répertoire \GLScene9\.
III-A. Ouvrir le paquet▲
Pour installer le paquet de composants de GLScene9 nous allons nous baser sur le paquet prévu pour Delphi 7 livré avec les sources.
Ouvrez le fichier \GLScene9\packages\GLScene9_D6.dpk, à ce moment Delphi demande s'il faut convertir le paquet en paquet Win 32 ou .NET pour Delphi 2005.
Choisissez Win 32.
III-B. Modifier le fichier d'inclusion▲
Tous les fichiers de GLScene comme d'autres composants multiplateformes appellent un fichier d'inclusion nommé GLScene.inc. Celui-ci contient la déclaration des variables de compilations relatives aux versions du compilateur utilisé.
Voici les différentes modifications à effectuer pour tenir compte du compilateur Delphi 9.
En premier lieu il faut tester la version du compilateur afin de créer les variables de versions utilisées par la suite :
{$ifdef VER170}
{$DEFINE GLS_COMPILER_2005}
{$DEFINE GLS_DELPHI}
{$DEFINE GLS_DELPHI_2005}
{$endif}
La variable prédéfinie VER170 permet de savoir que l'on utilise Delphi 2005.
Il faut ensuite utiliser la version du compilateur afin de signaler que Delphi 2005 est une évolution de Delphi 7 :
{$IFDEF GLS_COMPILER_2005}
{$DEFINE GLS_COMPILER_1_UP}
{$DEFINE GLS_COMPILER_2_UP}
{$DEFINE GLS_COMPILER_3_UP}
{$DEFINE GLS_COMPILER_4_UP}
{$DEFINE GLS_COMPILER_5_UP}
{$DEFINE GLS_COMPILER_6_UP}
{$DEFINE GLS_COMPILER_7_UP}
{$DEFINE GLS_COMPILER_2005_UP}
{$ENDIF}
{$IFDEF GLS_DELPHI_2005}
{$DEFINE GLS_DELPHI_2_UP}
{$DEFINE GLS_DELPHI_3_UP}
{$DEFINE GLS_DELPHI_4_UP}
{$DEFINE GLS_DELPHI_5_UP}
{$DEFINE GLS_DELPHI_6_UP}
{$DEFINE GLS_DELPHI_7_UP}
{$DEFINE GLS_DELPHI_2005_UP}
{$ENDIF}
III-C. Définir les chemins▲
Afin que Delphi puisse trouver les sources et les compiler, il faut ajouter le chemin des sources dans les options du projet :
- Destination : vous permet de spécifier le répertoire de sortie du fichier compilé du composant le fichier .bpl. Ici « vide » indique le répertoire actuel du projet.
- Destination de l'unité : permet de regrouper les fichiers compilés de chaque unité les fichiers .dcu. Ici j'ai choisi de tout mettre dans ..\DCU c'est plus pratique.
III-D. Corriger les problèmes▲
Voici la liste de toutes les modifications que j'ai pu apporter. Il est aisé de les retrouver dans le code en faisant rechercher la chaîne « pour 2005 » dans toutes les unités, car j'ai légendé chaque modification par « Modif JJM pour 2005 ». vous retrouverez de simples cast de variables pour assurer la compatibilité :
\GLScene9_v091A2\Source\DesignTime\GLSceneEdit.pas(833
):
FCurrentDesigner.SelectComponent(TPersistent(Tree.Selected.data)); cast TPersistent
\GLScene9_v091A2\Source\DesignTime\GLSceneEdit.pas(839
):
FCurrentDesigner.SelectComponent(TPersistent(Tree.Selected.data)); cast TPersistent
\GLScene9_v091A2\Source\DesignTime\GLSceneEdit.pas(1166
):
FCurrentDesigner.SelectComponent(TPersistent(BehavioursListView.Selected.Data)); cast TPersistent
\GLScene9_v091A2\Source\DesignTime\GLSceneEdit.pas(1174
):
FCurrentDesigner.SelectComponent(TPersistent(EffectsListView.Selected.Data)); cast TPersistent
\GLScene9_v091A2\Source\DesignTime\GLSceneEdit.pas(1247
):
FCurrentDesigner.SelectComponent(TPersistent(selNode.Data)); cast TPersistent
\GLScene9_v091A2\Source\DesignTime\GLSceneEdit.pas(1281
):
FCurrentDesigner.SelectComponent(TPersistent(BehavioursListView.Selected.Data)); cast TPersistent
\GLScene9_v091A2\Source\DesignTime\GLSceneEdit.pas(1303
):
FCurrentDesigner.SelectComponent(TPersistent(EffectsListView.Selected.Data)); cast TPersistent
\GLScene9_v091A2\Source\DesignTime\FXCollectionEditor.pas(176
):
FDesigner.SelectComponent(IdesignObject(ListView.Selected.Data)); cast IDesignObject
\GLScene9_v091A2\Source\AVIRecorder.pas(19
):
uses
Windows, Classes, Controls, Forms, Extctrls, Graphics, JJM_vfw, GLScene,
vfw.pas --> JJM_vfw.pas pour assurer la compatibilité avec les composants de la jvcl
III-E. Installer le paquet▲
Pour installer le paquet, lancer Delphi 2005 puis ouvrir le fichier \GLScene9_v091A2\Delphi9\GLScene9.bdsproj.
Le projet apparaît alors dans la fenêtre du gestionnaire de projet. Utiliser un clic droit sur le projet dans l'explorateur de projet sur la droite, et sélectionner installer :
Delphi devrait signaler l'installation des nouveaux composants :
IV. Conlusion▲
Et voilà les composants sont installés, un test simple sur les exemples fournis dans \Demo\ vous permettra de le constater par vous-même.
Merci à « NONO40 » pour son aide et ses conseils précieux.