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

Résolu
Signaler
Messages postés
97
Date d'inscription
vendredi 22 octobre 1999
Statut
Membre
Dernière intervention
13 juin 2016
-
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
-
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

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
97
Date d'inscription
vendredi 22 octobre 1999
Statut
Membre
Dernière intervention
13 juin 2016
1
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