Comment séparer les instances d'une DLL en mémoire

Résolu
blq Messages postés 97 Date d'inscription vendredi 22 octobre 1999 Statut Membre Dernière intervention 13 juin 2016 - 22 janv. 2005 à 23:54
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 23 janv. 2005 à 11:15
Bonjour,



Comment séparer les instances d'une DLL en mémoire en VB6 (SP5).



Vopila mon souci : j'ai créé un DLL qui ouvre un fichier et qui
permet de renvoyer des lignes de ce fichier. D'un prog Exe j'appel la
DLL pour récupérer l'info souhaitée ainsi.



Dim theObj as New theLib.TheClass

Dim theLine as String



Call theObj.OpenFile(theFile)

theLine = theObj.GetLine(1)



Cela fonctionne trés bien !





Le problème vien ensuite si j'ouvre 2 fichiers sur 2 objets différents.




Dim theObj1 as New theLib.TheClass, theObj2 as New theLib.TheClass


Dim theLine as String




Call theObj1.OpenFile(theFile1)


Call theObj2.OpenFile(theFile2)




theLine = theObj1.GetLine(1)



Dans ce cas theLine est celui de fichier 2 et non du fichier 1.





J'ai bien compris le souci, les dernières données lues sont celles
conservées et renvoyées. A priori, je dirais que c'est la DLL qui
est mal foutue, mais pourquoi Ovj1 et Obj2 pointent sur les même
valeurs alors qu'a priori il y a deux déclartions (New) différentes.
J'ai essayé des tas de paramêtres (MultiUse, Global, Thread Cloisonnée,
1 seule Thread, etc.), enfin plein de truc et config, mais rien ne
change.



Quelq'un aurait-il une piste, un tutorial, une info, une FAQ, un forum
(etc.) qui permetrait d'avoir 2 instances disjointes ? Car j'ai eu beau
lire la Doc, il y a quelque chose que j'ai pas compris ou que je n'ai
pas fais.



Merci d'avance !


BLQ

3 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
23 janv. 2005 à 10:36
Tout dépend de ton implémentation : si tu passe par un module, tes
données sont communes aux 2 instances, si tu passe par des modules de
classes, alors chaque instance est différenciée.

DarK Sidious

Administrateur et reponsable VB/API du site www.ProgOtoP.com
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
23 janv. 2005 à 11:15
Ben un module sert à faire des déclarations globales à tout un projet,
et c'est tout. Par contre, un module de classe permet de déclarer des
données localisés dans une instances de cette classe, ce qui permet de
créer des objets très facilement.



Dans un dll, c'est le module de classe le plus important ! Il ne faut
utiliser de module que si l'on veut garder des données communes entre
toutes les instances de dll qu'on peux créer.

DarK Sidious

Administrateur et reponsable VB/API du site www.ProgOtoP.com
3
blq Messages postés 97 Date d'inscription vendredi 22 octobre 1999 Statut Membre Dernière intervention 13 juin 2016 1
23 janv. 2005 à 11:07
Effectivement, je passe par un Module, donc il me suffit de déclarer
une Class dans l'exe et de faire appel à la DLL ? Vraiment trop simple.



Merci beaucoup pour cette super info !

BLQ
0
Rejoignez-nous