Dam06
Messages postés2Date d'inscriptionvendredi 27 avril 2007StatutMembreDernière intervention17 avril 2008
-
15 avril 2008 à 15:29
Dam06
Messages postés2Date d'inscriptionvendredi 27 avril 2007StatutMembreDernière intervention17 avril 2008
-
17 avril 2008 à 10:26
Bonjour à tous,
Alors je vous explique mon problème:
J'ai une classe "Evnt_Horodate" declarée comme ceci:
class Evnt_Horodate
{
public:
int flag_suppression;
int flag_initialise;
Element element; //Classe Element
};
Elle contient un objet element de la classe Element declarée comme ceci:
class Element
{
public:
int data;
int date;
};
Je voudrais stocker cette classe dans un fichier binaire et pouvoir la relire par le suite.
Ma fonction d'écriture:
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;
}
Et ma fonction de lecture:
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;
}
Le fichier est bien créé et mon programme y écrit bien.
Mais "date_lue" qui devrait me renvoyer la valeur date de l'objet "element" contenu dans l'objet evnt_horo_lecture, reste toujours à 0...