Problème de passage d'un tableau de caractère vers un DLL en C [Résolu]

Signaler
Messages postés
50
Date d'inscription
mardi 5 mars 2002
Statut
Membre
Dernière intervention
4 décembre 2013
-
philipina
Messages postés
50
Date d'inscription
mardi 5 mars 2002
Statut
Membre
Dernière intervention
4 décembre 2013
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
63
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)
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
60
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
Messages postés
50
Date d'inscription
mardi 5 mars 2002
Statut
Membre
Dernière intervention
4 décembre 2013

J'ai trouvé la solution:

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

Alain
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
60
...

tu es sur d'être en VB.Net, ou t'es tu trompé de catégorie, nous faisant partir sur de mauvaises pistes ?
Messages postés
50
Date d'inscription
mardi 5 mars 2002
Statut
Membre
Dernière intervention
4 décembre 2013

Oups, oui je me suis trompé de catégorie , je suis en VB6.

Alain
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
60
ok,

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

bonne continuation
Messages postés
50
Date d'inscription
mardi 5 mars 2002
Statut
Membre
Dernière intervention
4 décembre 2013

Oui.  :)

Merci

Alain