Bonjour à tous,
Alors je vous explique mon problème:
J'ai une classe "Evnt_Horodate" declarée comme ceci:
Elle contient un objet element de la classe Element declarée comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 class Evnt_Horodate { public: int flag_suppression; int flag_initialise; Element element; //Classe Element };
Je voudrais stocker cette classe dans un fichier binaire et pouvoir la relire par le suite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 class Element { public: int data; int date; };
Ma fonction d'écriture:
Et ma fonction de lecture:
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
33
34
35
36
37
38
39 void ajouter(Element *element) { //Ouverture du fichier ofstream fichier_ecriture("Stockage.txt",ofstream::binary); //Creation de l'objet evnt_horodate a ecrire Evnt_Horodate *evnt_horodate; evnt_horodate = new Evnt_Horodate(); event_horodate->element.date = 15; //Parametrage de l'objet evnt_horodate evnt_horodate->flag_initialise = 1; evnt_horodate->flag_suppression = 0; if(fichier_ecriture) { //Position de l'octet int adresse_octet = 0; //Positionnement du curseur dans le fichier fichier_ecriture.seekp(adresse_octet,ios::beg); cout<<"Ajout d'un élement"<<endl; //Ecriture de la classe fichier_ecriture.write((char*) evnt_horodate, sizeof(Evnt_Horodate)); //Fermeture du fichier fichier_ecriture.close(); } else { TRACE("erreur d'ecriture dans le fichier !"); } //Destruction des objets delete evnt_horodate; delete element; }
Le fichier est bien créé et mon programme y écrit bien.
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
33
34
35
36 void lire() { int date_lue; //Creation d'un objet de type Evnt_Horodate pour la lecture Evnt_Horodate *evnt_horo_lecture; evnt_horo_lecture = new Evnt_Horodate(); //Ouverture en lecture du fichier Stockage.txt ifstream fichier_lecture; fichier_lecture.open("Stockage.txt",ios::binary); if(fichier_lecture) { //Positionnement du curseur dans le fichier fichier_lecture.seekg(0,ios::beg); //Lecture de l'evenement fichier_lecture.read((char*) evnt_horo_lecture, sizeof(Evnt_Horodate)); //Lecture de la date de cet evenements date_lue = evnt_horo_lecture->element.date; cout<<"date lue :"<<date_lue<<endl; //Fermeture du fichier fichier_lecture.close(); } else { cout<<"Erreur de lecture dans le fichier !"<<endl; } //Destruction de l'objet evnt_horo_recherche delete evnt_horo_lecture; }
Mais "date_lue" qui devrait me renvoyer la valeur date de l'objet "element" contenu dans l'objet evnt_horo_lecture, reste toujours à 0...
Vous voyez un problème dans mon code ?
Je vous remercis par avance !
Partager