Lolobreizh
Messages postés6Date d'inscriptionmercredi 24 juillet 2002StatutMembreDernière intervention 7 mars 2005
-
3 févr. 2005 à 16:33
Lolobreizh
Messages postés6Date d'inscriptionmercredi 24 juillet 2002StatutMembreDernière intervention 7 mars 2005
-
3 févr. 2005 à 19:23
Bonjour,
Ma question est à mi-chemin entre VB et C :
Je crée un fichier en C qui est la sauvegarde d'une structure TYPE2 définie comme suit :
typedef struct tagTYPE1 {
char chp1[10];
char chp2[10];
} TYPE1, *LPTYPE1;
J'essaie ensuite de lire ce fichier en VB en mode binaire :
type TYPE1
chp1 as String
chp2 as String
end type
type TYPE2
nbType1 as Integer
arrayType1(10) as TYPE1
end type
sub test()
dim canal as integer
dim str as TYPE2
canal = FreeFile
open "c:\toto.txt" as canal
get canal, filelen("c:\toto.txt") - 1, str
msgbox str.nbType1
end sub
Je n'ai pas d'erreur mais str est toujours vide.
Avez-vous une idée de ce qui peut se passer ?
Merci d'avance.
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 3 févr. 2005 à 16:53
Oui ! C'est normal ! Ton souci vient du fait que VB et C ne stocke pas leur chaine de la même manière en mémoire ! Vb stocke devant la chaine la longueur de celle-ci en mémoire, alors que C stocke directement la chaine et ajoute un caractère de code ascii zéro à la fin !! Donc une fois sur disque , ca merdouille si tu passe du C écrivain au VB lecteur (l'inverse sera autant merdouillant d'ailleur !!)
Le plus simple serait de lire en vB un tableau de byte de 201 bytes de long (la taille en byte de ta structure écrite par le C si je ne m'abuse) et de faire ensuite des CopyMemory depuis ton tableau de byte vers ton type VB !
Bonne chance, mon vieux !!