Salut à tous
Toujours dans l'optique de faire un programme entièrement modulaire, j'ai choisi d'utiliser les packages pour m'affranchir des DLL et de tous les problèmes que ça engendre.
Seulement j'ai des soucis que je n'arrive pas du tout à identifier
Voila l'architecture du programme:
- Un exécutable
- Un package commun à tous qui contient des routines, classes et constantes. J'y suis obligé parce que malgré UnloadPackage, je ne peux pas utiliser le même unité dans différents packages (Sinon, c'est trop simple ). Ce package est "Seulement en exécution"
- Un package pour chaque plugin qui publie une classe qui a toujours le même nom pour tous les packages. Chacun de ces packages :
- utilise le package commun.
- Register et Unregister les classes dans les sections initialization et finalization
- Contient au moins une TForm
- Est "Seulement en exécution"
Seulement, dans l'exécutable, j'utilise des unités du package commun. Je les ajoute donc dans les uses.
Lors du chargement du programme, je charge le package avec LoadPackage, je récupère la classe puis récupère avec une de ces méthodes, les propriétés du plugin puis je décharge le package avec UnloadPackage.
Tout se passe bien.
J'essaie ensuite de lancer un des plugins, je (re)charge donc le package en question (OK) et je récupère la classe (OK) je lance sa méthode. Et là, Vlan! Acces Violation (donc pas OK)...
Donc pour tester, avant même de créer quoi que ce soit dans la méthode de la classe du package, j'ai mis un ShowMessage. Il n'apparait même pas! Ce n'est donc pas mon code qui est en cause...
J'ai d'ailleurs l'impression que LoadPackage et UnloadPackage ont de sérieux problèmes: Certaines choses comme les unités utilisées devraient être purgées mais elles ne le sont pas...
Bref, je me mélange un peu les pinceaux et je suis complètement perdu.
Si quelqu'un pouvait m'aider à mettre en place ce système, ce serait sympa
Que ne faut-il pas oublier? Quelles options de projet doivent être activées ou non? Est-ce que cette architecture vous parait correcte? Si un train part d'Orléans à 14h30 et qu'un autre part de Dunkerque à 18h26, quel est l'âge du capitaine?
Merci d'avance
Partager