Conversion d'un String en VB.net en Char* en C++.net
cs_didiou
Messages postés1Date d'inscriptionjeudi 27 novembre 2003StatutMembreDernière intervention27 novembre 2003
-
27 nov. 2003 à 15:42
legaultp
Messages postés7Date d'inscriptionmercredi 25 février 2009StatutMembreDernière intervention 8 avril 2009
-
7 avril 2009 à 19:59
salut tout le monde!
J'ai un petit probleme sur lequel je galere depuis 2 jours:
J'ai developpé une dll en C++.net qui comporte une fonction ayant pour argument un char*.
Cette dll est appelée par un programme VB.net qui doit donc passer en argument de la fonction un Char*. Or vu que le type char* n'existe pas en VB.net je lui passe une String. Le probleme est qu'au moment de passer la String en parametre, la dll ne recoit que le premier caractere de la String.
exemple:
Prenons le cas d'une fonction a laquelle on passe un nom et il retourne l'inverse:
prototype de la foction de la dll C++:
char* __stdcall ReverseName(char *name);
programme appelant en VB
Private Sub Button1_Click() Handles Button1.Click
Dim nom As String = Space(10)
nom = TextBox1.Text 'ligne1
Label1.Text = ReverseName(nom) 'ligne2
End Sub
Si j'ecrit "salut" le programme est sensé me retourner "tulas"
et au lieu de ca:
-dans la ligne 1 de l'exemple:
nom = "salut "
-mais au moment du passage de parametre en ligne 2
nom= "s"
Donc je pense qu'il doit exister une fonction de conversion afin que la String soit stockable dans un char*.
Voila, je compte sur vous car je dois faire ca rapidement.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 27 nov. 2003 à 16:14
Je ne connais pas vb.net mais pour vb simple on ne retourne jamais de pointeur car il ne connait pas. On modifie les octets du buffer passe en param a la dll et au mieux on retourne un code d'erreur.
Ne serait-ce pas idem pour vb.net ?
BruNews, ciao...
legaultp
Messages postés7Date d'inscriptionmercredi 25 février 2009StatutMembreDernière intervention 8 avril 2009 6 avril 2009 à 22:23
J'ai pratiquement le même problème et je ne comprend pas ta réponse BruNews. Je suis encore un apprenti en prog alors, pourrais-tu me détailler un peu plus ton affirmation!
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 7 avril 2009 à 08:49
Prenons le code au dessus:
Label1.Text = ReverseName(nom)
NON, la DLL ne retourne rien d'exploitable pour VB.
On aura par contre:
ReverseName(nom)
Label1.Text = nom
La DLL aura modifié les octets dans le buffer nom (la String).