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 :

Quelques petites questions [Langage/Algorithme]


Sujet :

C++Builder

  1. #21
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 128
    Points : 44
    Points
    44
    Par défaut
    Re, j'arrive à pas à enregistrer l'état de mon CheckBox, quelqu'un a une idée ? J'essaie de mettre en application ce qui est dit dans la FAQ mais rien n'y fait

    http://cpp.developpez.com/faq/bcb/?page=systemeregistre

    Une idée ?

  2. #22
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 128
    Points : 44
    Points
    44
    Par défaut
    Bon finalement après avoir bidouillé mon code j'en suis arrivé à ça et ça a l'air de marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    __fastcall TAnniversaire::TAnniversaire(TComponent* Owner)
    	: TForm(Owner)
    {
      TRegistry *Reg = new TRegistry();
      Reg->RootKey = HKEY_LOCAL_MACHINE;
      Reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", false);
      if(Reg->ValueExists("Checked")){
    	CheckBox1->Checked = true;
      }else{
    	CheckBox1->Checked = false;
    	Reg->DeleteValue("AnniversaireM");
      }
      delete Reg;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void __fastcall TAnniversaire::FormClose(TObject *Sender, TCloseAction &Action)
    {
      TRegistry *Reg = new TRegistry;
      Reg->RootKey = HKEY_LOCAL_MACHINE;
      Reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run",true);
      if ( CheckBox1->Checked ){
    	Reg->WriteBool("Checked",true);
    	Reg->WriteString("AnniversaireM", Application->ExeName);
      }else{
    	Reg->DeleteValue("Checked");
      }
      Reg->CloseKey();
      delete Reg;
    }
    Sa marche, est-ce que c'est correct ? Je l'espère

  3. #23
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Tu enregistres la propriété Checked de ton contrôle avec WriteBool?

    Pour lire tu peux utiliser ReadBool.
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  4. #24
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 128
    Points : 44
    Points
    44
    Par défaut
    Euh ouais, si il est coché je j'enregistre le Boolean "Checked" à true,
    ce qui me permet de le tester lors que démarrage du programme...

    Peut-être que je devrais simplement enregistrer un nom "Checked" dans le registre et tester si il existe ou non comme je l'ai fait dans l'initialisation de mon programme.

  5. #25
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Mon dernier message est arrivé quelques secondes après le tiens, donc je ne l'avais pas encore lue, c'est pourquoi ce que je dit n'a pas de sens par rapport à ce que tu as écris.

    Tu devrais utiliser HKEY_CURRENT_USER à la place de HKEY_LOCAL_MACHINE, car dans beaucoup de cas les ordinateurs dans les bureaux n'ont pas les droits d'admin et ne peuvent donc pas écrire à cet endroit.

    Voici mon code pour ce genre de truc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        TRegistry *reg = new TRegistry();
        try
        {
            reg->RootKey = HKEY_CURRENT_USER;
            reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", false);
            MaVal = reg->ValueExists(Application->Title);
        }
        catch (...)
        {   // Valeur par défaut
        }
        delete reg;
    Et:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        TRegistry *reg = new TRegistry();
        reg->RootKey = HKEY_CURRENT_USER;
        if(reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", false))
        {
            try
            {
                reg->WriteString(Application->Title, Application->ExeName);
            }
            catch(...)
            {   // L'écriture dans le registre a échoué
            }
        }
        reg->CloseKey();
        delete reg;
    Comme tu vois, c'est pratiquement la même chose toi. Disons, qu'il n'y a pas 100 000 façon de le faire
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  6. #26
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 128
    Points : 44
    Points
    44
    Par défaut
    Ah ok donc je vais mettre ça dans le HKEY_CURRENT_USER !

    Merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Séparer son code] quelques petites questions.
    Par echantillon dans le forum C
    Réponses: 33
    Dernier message: 07/03/2007, 17h29
  2. quelques petites questions
    Par la debutante dans le forum Windows
    Réponses: 1
    Dernier message: 20/12/2006, 09h08
  3. quelques petites questions sur les windows form
    Par natasha84 dans le forum C++/CLI
    Réponses: 22
    Dernier message: 25/05/2006, 22h14
  4. Quelques petites questions sur le shell
    Par Badaboumpanpan dans le forum Linux
    Réponses: 8
    Dernier message: 01/04/2006, 00h09
  5. [Tk] Quelques petites questions
    Par Damian dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 06/02/2006, 16h34

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