Pointeur de structure venant d'une DLL

Résolu
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 - 18 mars 2011 à 11:30
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 - 21 mars 2011 à 17:42
Bonjour à tous

Voila je récupere un pointeur d'une structure créé dans une DLL
J'arrive a lire cette structure en faisant plusieurs CopyMemory de suite et les attribuant a chaque branche de la structure.

Je voudrais savoir si il est possible, de poser en une seule fois les pointeurs dans la structure, sans avoir a passer par la valeur.

Public Type Complexe
 String As String
 Long As Long
 Integer As Integer
End Type

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal Size As Long)
Dim VariableStructurer As Complexe, Phrase As String, PointeurDll As Long, PointeurElement As Long

 ChDir App.Path
   
 PointeurDll = CreationStructureStandard
 
 CopyMemory PointeurElement, ByVal PointeurDll, 4
 VariableStructurer.String = Space$(lstrlen(PointeurElement))
 lstrcpy VariableStructurer.String, PointeurElement
  
 CopyMemory VariableStructurer.Long, ByVal PointeurDll + 4, 4

 CopyMemory VariableStructurer.Integer, ByVal PointeurDll + 8, 4
 
 Phrase = Str(VariableStructurer.Integer) + Chr(13)
 Phrase = Phrase + Str(VariableStructurer.Long) + Chr(13)
 Phrase = Phrase + VariableStructurer.String

 MsgBox Phrase, vbOKOnly, "Visual Basic - Reception d'une structure Standard de la DLL"


Je vous souhaite une bonne journée

7 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
19 mars 2011 à 01:31
Bah non.
Tu as besoin de trois réponses, donc il faut questionner trois fois.
Mais bon, il te suffit de mettre cette recherche de pointeur dans une Sub et d'appeler la Sub.
Exemple "à la grosse"
Sub GetPointers(ByRef maVariableStructurer As Complexe, _
                ByRef PointeurDll As Long)
' Remet ici ton code en remplaçant VariableStructurer par maVariableStructurer 
End Sub
et appelles la sub en fournissant les deux infos nécessaires
Call GetPointers(VariableStructurer, LePointer)
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 mars 2011 à 16:32
Salut

Pas compris ta question.

NB : Très très mauvaise bonne idée d'appeler tes variables comme des mots clés du langage - gare aux bugs difficiles à cerner ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 1
18 mars 2011 à 19:24
Oui ,tu as raison en fait comme c'est un exemple j'ai pas plus réféchi que ça ....mais je corrigerais

En fait il faut que je fasse 3 copymemory pour transférer le pointeur dans la structure

Je voulais savoir si l'on pouvait faire cela en une seule fois ???
0
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 1
19 mars 2011 à 17:40
D'accord je croyais que y'avait un moyen plus simple pour retourner la structure entière en une seule fois.
Style pouvoir travailler directement les pointeurs et les copier dans les pointeurs de la structure, un truc comme ça

Je me renseignais aussi dans y'aurait plusieurs structures différentes, je serais donc obligé de créer plusieurs procédures (Une par type de structure)

Merci de ton aide et bonne journée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
19 mars 2011 à 20:35
Oui, puisque chaque structure pouvant héberger des types différents de variables, les offset|décalages seront, eux aussi, propres à la structure.
0
lesdis Messages postés 403 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 7 août 2020
21 mars 2011 à 15:45
Bonjour,

Si tu peux développer ton appli en .net, il existe des solutions à ton pb.


Bonne Prog
0
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 1
21 mars 2011 à 17:42
Merci de ta réponse LESDIS

Mais VB6 est déjà bien assez compliqué pour moi

Apparemment .NET a corrigé pas mal de problèmes de VB6, et rajouté beaucoup de fonctions.
Mais il a apporté aussi la complexité avec

Passe une bonne journée
0
Rejoignez-nous