Problème de passage d'un tableau de caractère vers un DLL en C

Résolu
philipina Messages postés 50 Date d'inscription mardi 5 mars 2002 Statut Membre Dernière intervention 4 décembre 2013 - 21 févr. 2008 à 18:12
philipina Messages postés 50 Date d'inscription mardi 5 mars 2002 Statut Membre Dernière intervention 4 décembre 2013 - 22 févr. 2008 à 10:49
Bonjour,

Je dois utiliser un DLL écrite en C dans un programme VB6. Un des parametres que je dois passer à la structure suivante en C.
----------------------
struct SToken
{
    char sToken[33];
    char sResponseToken[33];
};
---------------------
Sous VB je l'ai déclaré de la manière suivante
----------------------
Public Type SToken
    SToken As String
    sResponseToken As String
End Type
----------------------

Le problème est que si je mes la value "test" sous VB dans la variable SToken.SToken, du coté C j'obtiens autre chose.
J'imagine que cela est du au fait que du coté C la variable est un tableau de char et du coté VB la variable est une string
Pouvez-vous me dire comment puis-je résoudre ce problème et passer correctement la structure Stoken à la DLL?

Merci d'avance pour votre aide.

Alain.

Remi

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
21 févr. 2008 à 19:29
Salut
Je ne pourrais te donner de solution ne connaissant pas trop .Net et pas du tout C
Je sais que C fonctionne souvent plus avec les adresses mémoires des chaines qu'avec les chaines elles-mêmes.
Voir aussi les problèmes éventuels de communication avec des chaines Unicode (sous VB)

Idées :
- Si l'étendue des chaines définie sous C est de 33 caractères, il serait souhaitable de faire pareil côté VB
Essaye de voir si le formatage   SToken As String * 33   fonctionne
- Voir s'il faut envoyer aussi un Chr(0) en fin de chaine (norme), je crois que les chaines sous C se servent de ce caractère pour déterminer la fin de chaine
- Essaye aussi de transférer un tableau de 33 Bytes correspondant à cette chaine

Voir les diverses questions à ce sujet sur le forum :
http://www.vbfrance.com/recherche.aspx?tr=forum&r=vb+dll+c

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

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 févr. 2008 à 22:28
deux tableaux de 33 octets... on est d'accord.
déclarer As String ne t'aidera pas a grand chose.

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
philipina Messages postés 50 Date d'inscription mardi 5 mars 2002 Statut Membre Dernière intervention 4 décembre 2013
22 févr. 2008 à 08:38
J'ai trouvé la solution:

Public Type SToken
    SToken As String * 33
    sResponseToken As String * 33
End Type

Alain
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 févr. 2008 à 10:18
...

tu es sur d'être en VB.Net, ou t'es tu trompé de catégorie, nous faisant partir sur de mauvaises pistes ?
0

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

Posez votre question
philipina Messages postés 50 Date d'inscription mardi 5 mars 2002 Statut Membre Dernière intervention 4 décembre 2013
22 févr. 2008 à 10:33
Oups, oui je me suis trompé de catégorie , je suis en VB6.

Alain
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 févr. 2008 à 10:39
ok,

Jack t'avais donc indiqué la solution a ton soucis...

bonne continuation
0
philipina Messages postés 50 Date d'inscription mardi 5 mars 2002 Statut Membre Dernière intervention 4 décembre 2013
22 févr. 2008 à 10:49
Oui.  :)

Merci

Alain
0
Rejoignez-nous