Pb de Gestion de Dll

Résolu
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 - 29 déc. 2012 à 12:29
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 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?

Si vous avez une idée? merci!






Jean_Jean

2 réponses

cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
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

Tout bête finalement!
Jean_Jean
3
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
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;


Jean_Jean
0
Rejoignez-nous