cs_barbichette
Messages postés220Date d'inscriptionlundi 30 octobre 2000StatutMembreDernière intervention15 juillet 2013
-
5 mars 2008 à 20:11
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 2022
-
8 mars 2008 à 13:48
Salut,
J'ai un petit souci. Je ne sais pas si c'est possible de faire marcher ceci :
- J'ai une DLL qui charge le contenu d'un fichier dans un tableau [0..255]of byte;
- dans mon application, j'appel une première fois loadlibrary puis GetProcAdress pour lier à la fonction de chargement
- Je lance le chargement d'un fichier
- dans mon application, j'appel une deuxième fois loadlibrary puis GetProcAdress
- Je relance le chargement d'un deuxième fichier
Et là... il écrase le contenu en mémoire du premier appel...
Alors que je voudrai "2 instances" de la dll avec le contenu des deux fichiers dans chaque instance.
Puis pouvoir interroger aussi bien la première sur son contenu ou la deuxième avec son propre contenu.
Est-ce possible de charger 2 fois une Dll mais à deux endroits différent de la mémoire ????
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 7 mars 2008 à 12:38
Salut,
Tu peux aussi faire des allocations dynamique du tableau dans la dll.
Mais il faudra libérer les tableaux dans la dll, Sauf si tu utilises ShareMem, mais c'est pas franchement conseillé. Ca doit pouvoir se faire dans le finalize, ou en interceptant le PROCESS_DETACH.
On ne peut pas facilement charger deux fois une même dll. Peut être avec MapAndLoad.
cs_barbichette
Messages postés220Date d'inscriptionlundi 30 octobre 2000StatutMembreDernière intervention15 juillet 2013 5 mars 2008 à 22:30
Effectivement, je vais peut-être faire ça...
D'autant que j'accède à ma DLL via une class TObject.
Donc, 2 classes, deux tableaux.
C'est tout bête, mais y'avais pas pensé....
J'attend quand même pour voir si il y a une autre possibilité directement par la DLL...
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 8 mars 2008 à 13:47
Salut,
que de complications ....
Il suffit de creer un Objet dans la DLL qui se charge de tout
Une unité avec les déclarations de l'objet qui se trouve dans la DLL (pour y accéder depuis l'application) et voilà le tour est joué ...
ça fonctionne très bien, l'accès est rapide (pour un Array[0..255] Of Byte)
et aucun problème d'accès, libération ou fuites de mémoire
Et donc en créant deux objet dans l'application on a acces au deux tableaux que l'on peut modifier et/ou consulter à souhait