begin process at 2012 05 29 10:35:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

Ecriture et lecture de class dans un fichier


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Ecriture et lecture de class dans un fichier

mardi 15 avril 2008 à 15:29:50 | Ecriture et lecture de class dans un fichier

Dam06

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...

Vous voyez un problème dans mon code ?

Je vous remercis par avance !
jeudi 17 avril 2008 à 10:26:40 | Re : Ecriture et lecture de class dans un fichier

Dam06

Réponse acceptée !
Je viens de trouver le problème, mes fonctions de lecture et ecriture marchent trés bien en faite !

Pour ce que ca interresse voila ou était le problème:

Il falait rajouter une fonction de copie dans la classe Element, pour pouvoir copier l'objet element dans les objet ecrits dans le fichier !

Class Element:

Code :
class Element {public:     int data;     int date;       void Copier(Element *source); };   void Element::Copier(Element *source){     data = source->data;     date = source->date; }
et dans la fonction d'ecriture:

Code :
//Parametrage de l'objet evnt_horodate     evnt_horodate->flag_initialise = 1;     evnt_horodate->flag_suppression = 0;     evnt_horodate->element.Copier(element);  
Bonne journée à tous !


Cette discussion est classée dans : fichier, lecture, element, evnt, horodate


Répondre à ce message

Sujets en rapport avec ce message

Urgent problem de lecture de fichier [ par deamon ] J'ai besoin d'aide, je voudrais faire un héditeur hexadecimal en Visual C++. Le problem est que je n'arrive pas a afficher un fichier en héxa dans un help sur lecture/ecriture sur fichier sur c++ [ par overfun ] Bonjour à tous et à toutes, je suis nouveau dans la programmation et voudrait savoir comment écrire dans un fichier seulement sur quelques lignes !!Co lecture de fichier [ par Machuet ] Hello, j'ai plusieurs question concernant la manipulation de fichier. En effet venant de VB, j'aimerais savoir si il existe des fonction pour lire un lecture d'un fichier txt-recuperationde donner-réecriture [ par Leparasite ] voila ce que je ve faire :sur mon dique dure c:\ j'ai un fichier TXT .je veu que mon programe lise le contenu de ce fichier et le réecrive sur le d: d plantage a lecture de fichier [ par Thaeron ] Quand utilise une fonction de lecture de fichier, elle s'arrete a l'octet 1A present dans le fichier, et je n'arrive pas a faire un saut de lecture, s lecture écriture dans un fichier formaté [ par borgeomi ] borgeomibonjouuuuuuur !!!!!Vieux programmeur C et COBOLJe voudrais écrire un programme orientée objet qui lit et écrit dans un fichier structuré( Equi lecture d'un fichier avi en cliquant sur un bouton de dialogue box [ par brrouabdellah ] je cherche également comme un Monsieur à écrire un simple fichier en c++ avec un dialogue box avec des boutons pour la lecture d'une fichier vidé avi. Lecture/écriture de fichier .INI sous Unix? [ par Samprayoga ] Bonjour à tous,C'est mon premier message sur ce forum, alors je vais essayer d'être clair.J'aimerais savoir s'il existe ou si quelqu'un a déjà impléme lecture dans un fichier TXT en C# (caractere) [ par haribo ] je cherche les fonctions C plus plus qui permette de faire la lecture dans un fichier TXT des caracteres. en mode mode caractere par caractete.merci d urgent:lecture de fichier limitée...comprends pas [ par yeager ] Bonjourj'ai besoin de lire un fichier par bloc de __int64(64 bits). Chaque bloc est mit dans une structure pour former une liste chaînée.Mon problème


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,952 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales