cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 2018
-
29 déc. 2012 à 12:29
cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 2018
-
29 déc. 2012 à 14:56
Bonjour à tous!
Bonne fêtes de fin d'année!
Pour ceux qui ont un peu de temps, voici mon problème:
J'ai un programme qui charge dynamiquement deux Dll.
1. La première rajoute des éléments de menu à la fiche principale en fonction de la présence du module appelé "CAMaga.dll" présente dans le répertoire Bin de l'Appli.
2. La 2ème déclare les fonctions d'une Dll apellée "Insee.dll" dans une autre fiche de l'Appli.
PB: Prises individuellement, les Dll fonctionnent correctement, mais la présence simultanée des deux Dll pose problème et mon Appli ne s'affiche même pas!
Voici la fonction qui je pense est la cause du problème (dans le Creat de la Fiche principale):
{9. Modules complémentaires = Dll Magasins}
{Recherche des fichiers DLL présents dans le répertoire "/Bin"}
If FindFirst(ExtractFilePath(ParamStr(0)) + '\bin\*.dll', faAnyFile, SR) = 0 then
begin
AjoutMenu(0);//Ajout de la première DLL
{Traitement des autres DLL éventuellement présentes}
while FindNext(SR) = 0 do
AjoutMenu(High(Plugins) + 1); // Nouvelle DLL => un élément de plus
{Libération des ressources allouées pour la recherche}
FindClose(SR);
end;
La Ligne en cause est While FindNext(SR) = 0 do car quand je supprime cet instruction, mon autre Dll fonctionne
Comment je pourrais faire pour qu'il ne prenne pas ma 2ème Dll ("Insee.dll") pour un plugin supplémentaire?
cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 20183 29 déc. 2012 à 14:56
Bon j'ai trouvé une solution!
Comme je ne peux pas prévoir les PlugIns (Dll) futurs, je connais par contre les Dll de fonctions qui sont intégrées dans mon Appli.
Il suffit donc que je rajoute un test qui excluent les Dll de fonctins :
if SR.Name <> 'Insee.dll' then
AjoutMenu(High(Plugins) + 1);
J'utilise donc un filtre des sorties répertoires sur le Nom de mes Dll de fonctions
cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 20183 29 déc. 2012 à 12:35
Pb d'affichage de mon code, le voici à nouveau
{9. Modules complémentaires = Dll Magasins}
{Recherche des fichiers DLL présents
dans le répertoire "/Bin"}
If FindFirst(ExtractFilePath(ParamStr(0))
+ '\bin\*.dll',faAnyFile, SR) = 0 then
begin
AjoutMenu(0);//Ajout de la première DLL
{Traitement des autres DLL
éventuellement présentes}
while FindNext(SR) = 0 do
AjoutMenu(High(Plugins) + 1);
// Nouvelle DLL => 1 élément de
plus
{Libération des ressources allouées
pour la recherche}
FindClose(SR);
end;