Bonjour ,
j'explique mon problème , je dois réécrire un logiciel complètement, et à un moment j'écris un fichier binaire qui est ensuite lu par un autre exécutif
J'écris un fichier binaire qui n'est pas reconnu par l'autre exécutif alors que celui écrit par l'ancienne version du logiciel est effectivement reconnu
Ce que j'écris
Avec Qt Creator 4.7.0
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 typedef struct { long nombre; double debut; double fin; double pas; } S_DataHeaderDepointageAntenne; // Dans les includes #include <fstream> #include <streambuf> #include <iostream> // dans la fonction d'écriture fstream fichierOut; fichierOut.open("fichierDepointageAntenne.bin", ios::out | ios::binary); if (!fichierOut) { cout << "erreur d'ouverture du fichier Depointage Antenne" << endl; } else { fichierOut.write((char*)&dataHeader, sizeof(S_DataHeaderDepointageAntenne)); fichierOut.flush(); ficherOut.close(); }
Le code de l'ancienne version qui fonctionne
J'ai bien vérifié que j'ai les bonnes informations dans la structure mais le fichier crée n'est pas le même.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 Avec VC6.0 typedef struct { long nombre; double debut; double fin; double pas; } S_DataHeaderDepointageAntenne; //Dans les includes #include <fstream.h> // dans la fonction d'écriture fstream fichierOut; fichierOut.open("fichierDepointageAntenne.bin", ios::out, filebuf::openprot); if (!fichierOut) { cout << "erreur d'ouverture du fichier Depointage Antenne" << endl; } else { fichierOut.setmode(filebuf::binary); fichierOut.write((char*)&dataHeader, sizeof(S_DataHeaderDepointageAntenne)); fichierOut.flush(); fichierOut.close(); }
Ci-joint le comparatif des deux fichiers binaires , ne regardez que la première ligne , les octets de 4 à 7 sont différents
J'ai essayé de regardé au niveau de la classe filebuf que je n'utilise plus dans ma version du logiciel mais je comprends pas
Partager