Lecture en VB d'un fichier cree en C

Résolu
Signaler
Messages postés
6
Date d'inscription
mercredi 24 juillet 2002
Statut
Membre
Dernière intervention
7 mars 2005
-
Messages postés
6
Date d'inscription
mercredi 24 juillet 2002
Statut
Membre
Dernière intervention
7 mars 2005
-
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;


typedef struct tagTYPE2 {
int nbType1;
TYPE1 arrayType1[10];
} TYPE2, *LPTYPE2;


int main() {
FILE* fic;
TYPE2 str;
/* Apres initialisation de str */
fic = fopen("C:\toto.txt", "w");
fwrite(str, sizeof(TYPE2),1, fic);
fclose(fic);
}

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.

2 réponses

Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
27
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 !!

Christophe R
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
6
Date d'inscription
mercredi 24 juillet 2002
Statut
Membre
Dernière intervention
7 mars 2005

Merci pour ta réponse.

Je vais tester ça.

Pour pallier à ce problème, j'avais utilisé un fichier plat formatté avec un champ par ligne.



Lolobreizh