Bonjour,
Dans le cadre d'un projet, je dois réécrire un programme VB6 en C++.
Ce programme écrit dans un fichier binaire grâce à la fonction VB "Put".
Des informations sur cette fonction peuvent être trouvées ici :
http://www.vb6.us/tutorials/reading-...s-visual-basic
A un moment donné, dans le programme VB, il y a cette instruction :
Put #fOut, PutBitRecNum, PutBitByte
fOut est le fichier dans lequel écrire, PutBitRecNum la position et PutBitByte la valeur à écrire. Au moment où cette instruction est exécutée, fOut est ouvert et vierge, PutBitRecNum vaut 1 et PutBitByte vaut 0 (je suis certain de ces valeurs).
Après que cette instruction ait été exécutée, lorsque j'ouvre le fichier avec Notepad, le symbole NUL est écrit au tout début du fichier (donc ça fonctionne bien).
Pour ma version C++, j'ai traduit cette instruction par :
fseek(fOut, putBitRecNum * sizeof(char), SEEK_SET);
fwrite(&putBitByte, sizeof(char), 1, fOut);
Donc, je me positionne d'abord grâce à fseek (le sizeof(char) est là car en VB j'écrit des bytes dans le fichier (putBitByte est d'ailleurs déclaré en tant que Byte dans le VB et en tant qu'unsigned char dans ma version C++).
La seule différence de valeurs entre les deux versions est que, en C++, putBitRecNum vaut 0 et non 1 car en VB, le début est à 1 et en C++ à 0 (voir lien fourni).
Pourtant, après l'exécution de ces 2 instructions, je n'ai absolument rien d'écrit dans mon fichier. Je ne comprends vraiment pas pourquoi, si quelqu'un pouvait m'éclairer ce serait sympa.
Merci d'avance.
EDIT : je précise que le fichier de la version VB fait 1ko après l'instruction alors que le fichier créé par la version C++ fait 0ko après.
Partager