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 :

Valeur DWord dans la Base de Registre


Sujet :

C++Builder

  1. #1
    Membre habitué Avatar de Mangacker
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 452
    Points : 181
    Points
    181
    Par défaut Valeur DWord dans la Base de Registre
    Hello tout le monde,

    après quelques mois sans C++ (hey oui ça fait long ^^), je me remet sur un nouveau projet.

    mon souci arrive au moment ou je dois inscrire de nouvelles clé et valeurs dans la base de registre.
    pour les besoins de mon application, je dois utiliser des valeurs DWord pour stocker mes infos.
    il n'y a pas de souci pour la création d'une valeur entière ou texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    registre->WriteExpandString("nomDeLaValeur", "valeur");
    mais je n'arrive pas à forcer le type en DWord.

    est-ce que quelqu'un a la solution??

    merci et bonne soirée

  2. #2
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Pourquoi utiliser WriteExpandString pour écrire une valeur entière?
    Utilise plutôt WriteInteger:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      TRegistry *reg = new TRegistry();
      reg->RootKey = HKEY_LOCAL_MACHINE;
      reg->OpenKey("CHEMIN DE LA CLÉ", false);
      reg->WriteInteger("Nom de la clé", 9999);
      delete reg ;

  3. #3
    Membre habitué Avatar de Mangacker
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 452
    Points : 181
    Points
    181
    Par défaut
    Citation Envoyé par sat83 Voir le message
    Pourquoi utiliser WriteExpandString pour écrire une valeur entière?
    Utilise plutôt WriteInteger:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      TRegistry *reg = new TRegistry();
      reg->RootKey = HKEY_LOCAL_MACHINE;
      reg->OpenKey("CHEMIN DE LA CLÉ", false);
      reg->WriteInteger("Nom de la clé", 9999);
      delete reg ;
    Merciiii..

    Je n'avais pas pensé que DWord était une valeur entière (word => je pensais plustot à un chaine de caractères ^^)

    Par contre avec ce code, j'ai l'erreur suivante qui s'affiche
    Type de données incorrecte pour 'Nom de la clé'
    Sais-tu d'où cela vient??

  4. #4
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Est ce que tu as cette erreur à la compilation, ou à l'exécution?
    De mon coté ce code fonctionne parfaitement.

    PS: bien évidemment,il faut remplacer "CHEMIN DE LA CLÉ" par le chemin de la clé dans la base des registres où tu souhaite écrire, mais ca je pense que tu avais compris.

    De la même façon, tu peux remplacer HKEY_LOCAL_MACHINE par une autre valeur (HKEY_CURRENT_USER, HKEY_USERS, etc...) selon l'endroit où tu souhaite écrire ta donnée.

  5. #5
    Membre habitué Avatar de Mangacker
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 452
    Points : 181
    Points
    181
    Par défaut
    J'ai une boite de dialogue qui apparaît lors de l'exécution du code.

  6. #6
    Membre habitué Avatar de Mangacker
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 452
    Points : 181
    Points
    181
    Par défaut
    La clé est bien crée par contre...

  7. #7
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Quelle valeur as tu mis à la place de "CHEMIN DE LA CLÉ"?
    Cette clé doit exister dans ton registre.

    Poste le bout de code que tu utilise pour écrire ta valeur.

    A noter que s'attaquer à la base des registres si on est pas sûr de ce qu'on fais n'est pas forcément conseillé, on a vite fais de faire des erreurs! Donc prend tes précautions...

  8. #8
    Membre habitué Avatar de Mangacker
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 452
    Points : 181
    Points
    181
    Par défaut
    en sachant que edUser->Text vaut "pathfinder"

    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
     
    	#include <registry.hpp>
     
     
    ...
     
     
     
    	AnsiString userKey = "\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\SpecialAccounts\\UserList\\";
    	AnsiString userName = edUser->Text;
     
    	TRegistry *reg = new TRegistry();
    	reg->RootKey = HKEY_LOCAL_MACHINE;
    	reg->OpenKey(userKey, false);
    	reg->WriteInteger(userName, 0);
     
    	delete reg ;

  9. #9
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Ton code me semble bon a première vue.
    Je ne vois pas d'où peut provenir l'erreur.

    Peut être des caractères spéciaux dans userName que le registre n'accepte pas? Même si j'ai fais quelques essai et je n'ai pas trouver de caractère interdit.

  10. #10
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Points : 578
    Points
    578
    Par défaut
    Hello,

    Citation Envoyé par Mangacker Voir le message
    Par contre avec ce code, j'ai l'erreur suivante qui s'affiche

    Type de données incorrecte pour 'Nom de la clé'
    Ce message est affiché suite à une erreur de lecture dans la base de registre (fonction ReadError dans Registry.pas).

    Ton problème doit se trouver dans la suite de ton code, genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	String x = reg->ReadString(userName);
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	int x = reg->ReadInteger(userName);

  11. #11
    Membre habitué Avatar de Mangacker
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 452
    Points : 181
    Points
    181
    Par défaut
    Citation Envoyé par totoche76 Voir le message
    Hello,



    Ce message est affiché suite à une erreur de lecture dans la base de registre (fonction ReadError dans Registry.pas).

    Ton problème doit se trouver dans la suite de ton code, genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	String x = reg->ReadString(userName);
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	int x = reg->ReadInteger(userName);
    woahoo..
    j'avais même pas vu ça.. alors que c'était 3 lignes en dessous... xD

    merci beaucoup

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

Discussions similaires

  1. Lire et écrire une valeur binaire dans la base de registre
    Par DelphiCool dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 13/02/2013, 21h46
  2. [vbs] récupérer une valeur dans la base de registre
    Par PiuPiu dans le forum VBScript
    Réponses: 2
    Dernier message: 22/12/2006, 19h04
  3. Chercher une valeur dans la base de registre
    Par Sallie dans le forum MFC
    Réponses: 9
    Dernier message: 19/05/2006, 13h57
  4. Réponses: 4
    Dernier message: 29/03/2006, 09h22
  5. [WD9] Ecriture de valeur BINAIRE dans la base registre
    Par le y@m's dans le forum WinDev
    Réponses: 4
    Dernier message: 01/09/2005, 16h07

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