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