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

MFC Discussion :

serialization???


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2003
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 141
    Par défaut serialization???
    Bonsoir tout l'monde
    Je vien de tester la serialization. Pendant qq seconde jai cru que ce serait le pied d'utiliser ça, mais en fait jai vite déchanté... c'est nikel pour les types simples(string, ...), mais après fo redefinir une fonction....
    Il m'est donc venu une gde question : quel est l'interet dutiliser ce mécanisme plutot que d'ecrire "a la main" dans un fichier???

    merci

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    je te livre la réponse que j'ai déjà fais a une autre personne sur le même sujet:
    Citation Envoyé par farscape
    Si je dois sauvegarder ou transférer par socket sur le réseau un objet qui comprend des données de type simple CString etc..
    Et des données variables à travers des listes, tableau d'objet etc ...
    Si je décide de sauvegarder le contenu de cet objet
    J’ai le choix entre une méthode "bourrine" de faire une seule fonction de sauvegarde et j'appel chacun des éléments etc ,
    Mais ça va devenir vite problème problématique si mes listes de variables d'objet ont plusieurs niveaux de profondeur ...
    Liste d'objet contenant une liste par exemple.
    La solution idoine c'est la sérialisation, les MFC permettent de diviser le travail a chaque objet (méthode plus objet).
    Ce qui est beaucoup plus aisé a programmer (modulaire) et plus sûr.
    Par exemple moi il m'arrive de sérialiser des objets dans un fichier en mémoire pour insérer le contenu dans un champ blob d'une base Mysql.
    quelques references:
    http://msdn2.microsoft.com/en-us/library/6bz744w8.aspx
    http://msdn2.microsoft.com/en-us/library/3bfsbt0t.aspx

  3. #3
    Membre confirmé
    Inscrit en
    Février 2003
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 141
    Par défaut
    ok, merci
    mais si par ex. ma classe contient un CListBox, pour pouvoir sérialiser les items, suis-je obligé de créer une classe héritant de CListBox qui implementerai la serialization??

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    si c'est juste pour sauvegarder le contenu d'une listbox la serialisation est peut etre un peu disproportionné ...
    tu peux utiliser un objet CArchive par exemple..
    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
     
    CFile myFile("myfile", CFile::modeCreate | CFile::modeReadWrite);
     
    CArchive arStore(&myFile, CArchive::store);
    CString str;
    arStore << listbox.GetCount(); // pour stocker le nb d'element pour la lecture...
    for(int i=0;i<listbox.GetCount();i++)
    {
       listbox.GetText(i,str );
      arStore.WriteString( str );
    }
    arStore.Close();
     
    // lecture
    myFile.SeekToBegin();
    CArchive arLoad(&myFile, CArchive::load);
    listbox.ResetContent(); // vide la listbox
    int nCount;
    arLoad >> nCount;
    for(int i=0;i<nCount;i++)
    {
      arLoad.ReadString(str);
      listbox.AddString(str);
    }
    arLoad.Close();
    bon j'ai ecris ça rapidement je n'ai pas compilé/testé le principe y est à toi d'adapter.

  5. #5
    Membre confirmé
    Inscrit en
    Février 2003
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 141
    Par défaut
    ok, merci bien
    javè tester les fichiers .ini comme solution de rechange (qui sont d'ailleurs fort agréables a utiliser), mais du coup je sais pas laquelle garder... par contre je pense qu'il sera necessaire de faire autant de CArchive que de ListBox non?

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    Citation Envoyé par OjBarbare
    ok, merci bien
    javè tester les fichiers .ini comme solution de rechange (qui sont d'ailleurs fort agréables a utiliser), mais du coup je sais pas laquelle garder... par contre je pense qu'il sera necessaire de faire autant de CArchive que de ListBox non?
    si elles sont toutes disponiblent au meme moment tu peux toutes les sauvegarder en une seule fois ...

  7. #7
    Membre confirmé
    Inscrit en
    Février 2003
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 141
    Par défaut
    euh.... et comment le CArchive va differencier les valeurs de mm types : les differents int pour dénombrer les items par exemple??? c'est l'ordre d'archivage qui va tout faire???

  8. #8
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    Il ne sait pas le faire, mais toi si !
    Si tu enregistres dans un ordre donné tes différentes lisbox il suffit de les relire dans le même ordre …
    tu auras donc x fois le bloc de commandes pour sauvegarder tes listbox.
    l'utilisation d'un tableau sur listbox peut etre judicieux pour factoriser le code....

  9. #9
    Membre confirmé
    Inscrit en
    Février 2003
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 141
    Par défaut
    ok ça roule
    merci!

Discussions similaires

  1. Set serial Number sur une disquette
    Par Cpet dans le forum Composants VCL
    Réponses: 4
    Dernier message: 01/12/2004, 10h24
  2. boost::serialize
    Par Fry dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 05/11/2004, 18h03
  3. type serial : pb
    Par xopos dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 02/09/2004, 09h08
  4. [DB2 V7 & V8] equivalent du type SERIAL
    Par geoffrey_k dans le forum DB2
    Réponses: 3
    Dernier message: 05/07/2004, 14h09
  5. Problème de serialization
    Par bruno270579 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 30/04/2003, 18h11

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