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++Builder Discussion :

Enregistrer mes données après fermeture du .exe?


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Par défaut Enregistrer mes données après fermeture du .exe?
    Bonjour tout le monde !
    J' aimerais savoir comment enregistrer mes données rentrées
    dans un ComboBox après la fermeture de mon exécutable,puisque a chaque réouverture de l' .exe tout s'éface.
    Merci !

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 94
    Par défaut
    Bonjour,
    Il faut inclure la bibliothèque #include <inifiles.hpp>
    Puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      TIniFile *Ini = new TIniFile(Application->ExeName.SubString(1, Application->ExeName.Length() - 4) + ".ini");
      Ini->WriteString("Parametres", "MonComboBox", MonComboBox->Text);
      delete Ini;

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Par défaut
    sa me créé un fichier .ini
    cepandant je narrive pas au redémarrage de mon .exe a retrouver
    les données rentrées...
    dans mon .ini je ne vois pas les différents items rentré dans ma ComboBox
    juste "Programme..."
    Expliquez moi la marche a suivre merci pour la réponse


  4. #4
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Dans ton fichier Ini, tu crée une section par ComboBox que tu nomme par exemple avec le Nom de ton ComboBox pour t'y retrouver.

    Ensuite dans chaque Section tu met
    - une clé pour le nombre d'item (Exemple NbItems)
    - une clé pour chaque Items (Item0, Item1, .....)

    Ensuite quand tu veux recharger ton ComboBox, il suffit de récupérer le nombre d'item de la section de ton comboBox
    Et ensuite tu boucle sur ce nombre d'item, et tu extrait chaque Item

    J'espère t'avoir aidé

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 94
    Par défaut
    Désolé mais j'ai mal répondu à la première réponse,
    Il est préférable de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ComboBox1->Items->SaveToFile("C:\\texte_ComboBox1.txt");
    dans l'évènement OnClose de ta Form pour sauvegarder tes données et puis pour les recharger au prochain démarrage tu fais dans l'évènement OnCreate de ta Form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ComboBox1->Items->LoadFromFile("C:\\texte_ComboBox1.txt");

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par défaut
    Dans la librairie JEDI, il y a aussi des classes pour la persistence dans un fichier INI ou un la registry.

    Voir la section "Jv Persistence" des composantes à placer sur ta fiche, notamment "TJvAppIniFileStorage" et TJvAppRegistryStorage". Le premier est probablement un wrapper de inifiles.hpp

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Par défaut
    "TJvAppIniFileStorage" et "TJvAppRegistryStorage" je n'arrive pas a trouver ces composant dans la palette .
    Qu'est-ce qu'un wrapper ?
    jsuis débutant

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par défaut
    Il faut installer la librairie "Jedi" pour avoir ces composantes:
    Description du projet: http://jcl.delphi-jedi.org/
    Download: http://sourceforge.net/project/showf...group_id=47514

    Un wrapper est un code qui permet d'utiliser une série de fonction en les encapsulant pour répondre à une autre interface. Comme par exemple la VCL qui utilise les API en interne pour certaines fonctions mais permet de les utiliser avec une interface (au sens des méthodes et des propriétés d'une classe) plus simple à utiliser pour le programmeur. Ainsi le programmeur n'a pas besoin de connaître toutes les API de windows pour pouvoir, par exemple, créer et utiliser, un bouton ou une combobox.

    http://en.wikipedia.org/wiki/Wrapper_pattern
    http://fr.wikipedia.org/wiki/Adaptat...de_conception)

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Par défaut
    Bon j'ai essayer d'installer JEDI mais sa ma pas données grand chose
    J' ai utiliser la méthode de sony351sa marche plutot bien
    Merci de votre réponse !

  10. #10
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 418
    Par défaut
    Salut !

    Désolé d'apporter ma contribution un peu tardivement !

    Il suffirait par exemple de lire et mémoriser le chemin de l'exécutable et de travailler dans son dossier.

    On déclare ces deux propriétés dans la classe de la form principale (private ou public... peu importe)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    AnsiString StoragePath;
    AnsiString StorageFile;
    Dans le constructeur de la form principale (donc ne se produira qu'au lancement de l'exé) :

    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
     
    StoragePath = ExtractFilePath(Application->ExeName);
    StorageFile = StoragePath + "Un_Nom_De_Fichier.TXT";
    if(FileExists(StorageFile)
        {
        ComboBox1->Items->LoadFromFile(StorageFile);
        if(ComboBox1->Items->Count != 0)
            {
            ComboBox1->ItemIndex = 0;
            }
        else
            {
            ComboBox1->Text = "Empty";
            }
        }
    else
        {
        // soit le dossier à été déplacé
        // soit c'est la première fois
        // c'est un léger inconvénient... qu'on peut gérer
        }
    Dans la Onclose de la form principale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if((Action != caNone) && (Action != caMinimize))
        {
        ComboBox1->Items->SaveToFile(StorageFile);
        }
    Donc tu peux travailler avec autant de fichiers de sauvegarde qu'il y a de ComboBox.

    A toi de gérér... y compris de restaurer un contexte initial si besoin est !

    A plus !

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

Discussions similaires

  1. Enregistrer une variable après fermeture
    Par majo59 dans le forum VB.NET
    Réponses: 6
    Dernier message: 25/02/2010, 13h13
  2. Réponses: 2
    Dernier message: 27/05/2008, 16h28
  3. Réponses: 1
    Dernier message: 21/02/2008, 12h52
  4. Réponses: 13
    Dernier message: 19/06/2007, 15h11
  5. [MySQL] Impossible d'enregistrer mes données
    Par Camille.CWS dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 16/02/2007, 16h59

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