IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

C++/CLI : stockage de donn�es d'objets de classes d�riv�es


Sujet :

C++/CLI

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Par d�faut C++/CLI : stockage de donn�es d'objets de classes d�riv�es
    Bonjour,

    Je me pose la question de savoir comment stocker dans un m�me fichier des objets issues de classes d�riv�es ..

    Voici un exemple :

    J'ai une classe CVehicule d�finie de la fa�on suivante :

    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
    #pragma once
     
    using namespace System;
     
    [Serializable]
    public ref class CVehicule
    {
    private:
        String ^ type;
        String ^ constructeur;
        String ^ modele;
    etc ...
    .
    .
    .
    Je cr�e une liste d'objets de cette classe que j'enregistre dans un fichier

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    String ^ strFilename = String::Concat (path, "materiel.dat");
    FileStream ^ stmMateriel = gcnew FileStream(strFilename, FileMode::Create, FileAccess::Write);
    BinaryFormatter ^ bfmMateriel = gcnew BinaryFormatter;
    bfmMateriel->Serialize(stmMateriel, materiel);  // materiel = liste d'objets de la classe CVehicule
    stmMateriel->Close();
    Jusque l� tout va bien, je stocke, je lis, modifie, relis et tout fonctionne ...

    Maintenant je cr�e des classes "CBicyclette", "CMoto", "CVoiture", "CCamion",... d�riv�es de la classe CVehicule ...

    Et je me pose la question de savoir comment stocker mes objets avec une m�thode aussi simple que la s�rialisation ...

    Je pense que la s�rialisation simple n'est pas possible car je vois mal comment d�-s�rialiser des objets diff�rents.

    Mais j'aimerais bien �tre s�r qu'il n'y a pas une solution simple � ce type de probl�me ..


    Bonne soir�e et merci d'avance � ceux qui prendront la peine de me lire.

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Tu s�rialises une donn�e discriminant le type (comme par exemple, le nom de la classe) avant chaque objet...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre �clair�
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Par d�faut
    Citation Envoy� par M�dinoc Voir le message
    Tu s�rialises une donn�e discriminant le type (comme par exemple, le nom de la classe) avant chaque objet...
    Merci M�dinoc,

    C'est d�j� bien de savoir que c'est faisable et que je peux y consacrer du temps.
    Avant de poser ma question j'avais essay� (�a ne coute rien d'essayer!) mais hormis le type du v�hicule (c'est d�j� �a!!) je ne r�cup�re que des z�ros.

    Je me pose plusieurs questions:

    1- Quand je mets mes objets dans la list, comment d�clarer la liste?
    Puis je mettre des objets CBicyclette dans une liste CVehicule
    En reprenant mon exemple, ai je le droit de faire �a :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    materiel = gcnew List <CVehicule^>;
    CBicyclette ^ bicyclette = gcnew CBicyclette;
    materiel->Add (bicyclette);

    Quand je d�-s�rialise, je fais comme �a :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    FileStream ^ stmMateriel = gcnew FileStream(Filename, FileMode::Open, FileAccess::Read);
    BinaryFormatter ^ bfmMateriel = gcnew BinaryFormatter;
    materiel = (List <CVehicule^> ^) bfmMateriel->Deserialize(stmMateriel);
    stmMateriel->Close();
    for each( CVehicule ^ vehicule in materiel)
    { 
        if (vehicule->type == "Bicyclette")
        {
             CBicyclette ^ bicyclette = gcnew CBicyclette;
             ....
    Mais l� comment dire que bicyclette est l'objet qui se trouve dans materiel??

    Je pense que c'est l� que �a coince car il faut bien que je dise que bicyclette est le v�hicule de materiel sinon il est normal que je r�cup�re des z�ros.

    Bonne soir�e

  4. #4
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Ah, �a fait un moment que je n'ai plus boss� sur la "vraie" s�rialisation, je ne me souviens plus exactement comment on d�s�rialise. Je vais devoir faire des tests.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 504
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 504
    Par d�faut
    En impl�mentant ISerializable ?

    http://msdn.microsoft.com/en-us/libr...v=vs.100).aspx

    Mais cela implique le la classe m�re connaissent ses classes filles.

  6. #6
    Membre �clair�
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Par d�faut
    Bonjour Bacelar,

    Et merci !!

    Citation Envoy� par bacelar Voir le message
    Mais cela implique le la classe m�re connaissent ses classes filles.
    Qu'est ce que cela veut dire?
    Faut il d�clarer les variables des classes filles dans la classe m�re?

    Si c'est le cas je ne vois plus trop l'int�r�t de cr�er des classes filles.

    J'ai regard� les liens et je sens que je vais me m�langer les pinceaux vite fait, bien fait tellement il y a de subtilit�s pour s�rialiser et d�-s�rialiser.

    J'aimerais pouvoir rester "as simple as possible" ....

    Bonne soir�e et merci encore pour vos aides pr�cieuses.

Discussions similaires

  1. Stockage en base de donn�es d'objets s�rialis�s
    Par MagnetiK dans le forum D�buter avec Java
    R�ponses: 1
    Dernier message: 07/06/2011, 08h52
  2. Stockage de donn�es
    Par moa378 dans le forum OpenGL
    R�ponses: 16
    Dernier message: 26/05/2005, 14h34
  3. Stockage de donn�es cartographiques en BDD
    Par Mack.51 dans le forum D�cisions SGBD
    R�ponses: 3
    Dernier message: 16/06/2004, 12h48
  4. Stockage de donn�es & lecture d'un fichier texte
    Par petitours dans le forum C++Builder
    R�ponses: 6
    Dernier message: 13/03/2004, 14h05
  5. [SGBDOO] Base de donn�es orient�e objet
    Par Jaona dans le forum D�cisions SGBD
    R�ponses: 19
    Dernier message: 14/04/2003, 11h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo