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

VC++ .NET Discussion :

[C++.NET] Idee pour sauvegarde de variables


Sujet :

VC++ .NET

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 63
    Points
    63
    Par défaut [C++.NET] Idee pour sauvegarde de variables
    Bonjour à tous,
    Alors voila dans une form j'ai des controls numericUpDown et j'aimerais sauvegarder les valeurs que l'utilisateur a rentré lorsque il ferme l'application. Bien entendu lorsqu'il lance l'application et appuie sur le bouton 'charger' toutes les valeurs se mettent en place dans leur controls respectif.
    J'ai deja utilise la sauvegarde Xml mais c'etait avec des datasets.

    Que dois je utliser pour effectuer cette tache? (la plus facile a utiliser lol ).

    Si vous avez des exemples/liens/codes/explications je suis preneur.

    Merci @++

  2. #2
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Points : 1 281
    Points
    1 281
    j'suis vert !

  3. #3
    Nouveau membre du Club Avatar de yoyann
    Inscrit en
    Juillet 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    Salut,

    Tu peux te créer une classe singleton qui contiendra les preférences de l'application.
    A la fermeture tu serialises cette classe et à l'ouverture tu la déserialises.

  4. #4
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 63
    Points
    63
    Par défaut
    Merci pour les reponses mais je trouve pas comment faire pour faire ca en C++ car sur msdn ya un tas de trucs genre pour les tableaux d'objets , d'objets de dataset, de Icollection, d'une classe qui contient un champ retournant un objet complexe.
    Comme d'habitude que des choses pas concretes et incomprehensible pour un debutant.

    Le lien en VB est bien mais c'est au niveau de la declaration que je bloque, impossible de convertir le VB en C++.

  5. #5
    Membre régulier Avatar de netomin
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 81
    Points : 102
    Points
    102
    Par défaut
    Si tu cherches un peu tu trouvera, tu veux un article sur la serialisation en C++?, j'ajoute ici UN que j'ai trouvé sur la web:

    http://www.developer.com/net/cplus/article.php/3350931

    Comme tu verra c'est le meme principe:

    C'est un exemple d'une classe serialisable.

    Ta classe serialisable:

    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
     
    [Serializable]__gc class Programmer{public:  Programmer(String* firstName, String* lastName, Int32 age)  
    {  
    this->firstName = firstName;   
    this->lastName = lastName;    
    this->age = age;  
    }
    protected:  String* firstName;  
    String* lastName;   
    Int32 age; 
    public:  __property String* get_FirstName() 
    { 
    return this->firstName; 
    }  
    __property String* get_LastName() 
    { return this->lastName; 
    }  
    __property Int32 get_Age() 
    { 
    return this->age; 
    }
    };
    Tu garde cela dans un fichier, ici avec le exemple programmer:

    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
     
    using namespace System::IO;
    using namespace System::Runtime::Serialization;
    using namespace System::Runtime::Serialization::Formatters::Binary;
    ...
    FileStream* stream = NULL;
    try
    {  
    Programmer* programmer = new Programmer("Joe", "Smith", 24);  
    stream = new FileStream(S"programmer.dat", FileMode::Create, FileAccess::ReadWrite);   
    BinaryFormatter* formatter = new BinaryFormatter();   
    formatter->Serialize(stream, programmer); 
    }
    catch(Exception* e)
    {  throw e;
    }
    __finally
    {  
    if (NULL != stream) stream->Close();
    }
    et après tu déserialises quand tu veux le récuperer de ton fichier:

    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
     
    using namespace System::IO;
    using namespace System::Runtime::Serialization;
    using namespace System::Runtime::Serialization::Formatters::Binary;
    ...
    FileStream* stream = NULL;
    try
    {  stream = new FileStream(S"Programmer.dat", FileMode::Open, FileAccess::ReadWrite);   
    BinaryFormatter* formatter = new BinaryFormatter();   
    programmer = static_cast<Programmer*>(formatter->Deserialize(stream));
    }
    catch(Exception* e)
    {  
    throw e;
    }
    __finally
    {  
    if (NULL != stream) stream->Close();
    }
    Ce code vient du lien en anglais que j'ai posté, si tu y va, tu trouvera les explications de l'author. Tom Archer

    à +
    Il y a toujours une réponse, il suffit de la trouver.

  6. #6
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 63
    Points
    63
    Par défaut
    J'ai suivi a peu pres ce qu'il y a de marque mais j'ai une erreur d'identificateur non declare.
    Je declare toutes mes varibles comme ci dessous:
    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
    public __gc class Positions_asperseurs : public System::Windows::Forms::Form
    public: 
               Positions_asperseurs(void)
    : pos_larg_asp1(0)
    , pos_long_asp1(0)
    , pos_larg_asp2(0)
    , pos_long_asp2(0)
    , pos_larg_asp3(0)
    , pos_long_asp3(0)
    , pos_larg_asp4(0)
    , pos_long_asp4(0)
    , pos_larg_asp5(0)
    , pos_long_asp5(0)
    , pos_larg_asp6(0)
    , pos_long_asp6(0)
    , pos_larg_asp7(0)
    , pos_long_asp7(0)
    , pos_larg_asp8(0)
    , pos_long_asp8(0)
    {
    InitializeComponent();
    }
    Et pour la serialisation ca donne ca:
    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
     
    FileStream* stream = NULL;
    try
    {  
    Positions_asperseurs* save_pos = new Positions_asperseurs();
    stream = new FileStream(S"save_pos.dat", FileMode::Create, FileAccess::ReadWrite);   
    BinaryFormatter* formatter = new BinaryFormatter();   
    formatter->Serialize(stream, save_pos); 
    }
    catch(Exception* e)
    {  throw e;
    }
    __finally
    {  
    if (NULL != stream) stream->Close();
    }
    Alors ca compile bien mais j'ai une erreur lorsque je lance clique sur mon bouton quand l'appli est lancee.
    ca donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    le type maquette.Positions_asperseurs dans l'assembly maquette, version=1.0.2313.29328, culture=neutral, publickeytoken=null n'est pas marque comme serializable
    Alors je sais pas d'ou ca peut venir??

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/09/2010, 16h39
  2. Réponses: 11
    Dernier message: 02/10/2009, 10h28
  3. Idées pour design d'application .net
    Par lord_anis dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/08/2008, 19h13
  4. Réponses: 3
    Dernier message: 11/11/2005, 12h59
  5. Réponses: 5
    Dernier message: 21/10/2005, 11h48

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