Private Declare Sub msgB Lib "test.dll" (DTexte As String, DTitre As String)
Private Sub Form_Load()
msgB "Voici le texte", "Voici le titre"
End Sub
mais j'obtient une mesagebox avec des caracteres bizard et pas du tout mon texte.
je voudrais savoir comment faire pour passer des arguments correctement! (de type string et long)
cs_PierreF
Messages postés33Date d'inscriptionmercredi 15 mai 2002StatutMembreDernière intervention24 octobre 2003 5 juil. 2002 à 18:29
Moi j'ai déjà eu ce problème!
Mais avec une DLL en C++. Je savait que ma DLL est bonne, donc j'avais un pb dans la déclaration du la fonction dans le VB.
Je pense que tu à le même pb. Par defaut VB déclare le paramètre comme étant ByVal. il fait une copie de la valeur. Toi tu veut un pointeur sur la donnée tu doit mettre ByRef
Essay donc de déclaré ta fonction comme ca:
Private Declare Sub msgB Lib "test.dll" (byref DTexte As String,byref DTitre As String)
cs_PierreF
Messages postés33Date d'inscriptionmercredi 15 mai 2002StatutMembreDernière intervention24 octobre 2003 10 juil. 2002 à 22:30
Quand dans VB tu met ByRef vb te donne un pointeur sur ce qui te donnerait si tu mettais byval
Les strings VB sont des pointeurs (char * en C/C++). Donc si tu met ByRef VB te donne un pointeur sur un pointeur! (char ** en C/C++)
Mais VB conseille de mettre ByVal (ce evite les pointeur sur des pointeur)!
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Arpent
Messages postés4Date d'inscriptionmardi 21 octobre 2003StatutMembreDernière intervention 3 novembre 2003 3 nov. 2003 à 13:11
Ouais, un petit tut sur l'asm, stp BlackWizzard !
On aimerai bien avancer un peu aussi dans l'histoire...
Merci d'avance !
Arpent
Il n'y a qu'une Vérité, je la cherche