Bonjour,
Je voudrai savoir comment faire pour récupérer le 'Nom de la Valeur' contenu dans un dossier de ma base de registre?
Merci
Bonjour,
Je voudrai savoir comment faire pour récupérer le 'Nom de la Valeur' contenu dans un dossier de ma base de registre?
Merci
J'ai trouver sa Merci, mais je ne sais pas comment l'utiliser.
Lorsqu'on envisage d'effectuer un traitement itératif sur un ensemble de clés, on utilise la méthode GetKeyNames(Strings: TStrings); Elle permet de récupérer dans une liste (TSrings) l'ensemble des noms de toutes les sous-clés de la clé en cours.
Registre.GetKeyNames(MaListeDeCle);
Par exemple je veut tous les Nom de Clé de:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DocFolderPaths
utiliste l'unité registry et une variable de type TRegistry.
ReadBool c'est pour lire une valeur booleean il existe plusieur fonction pour chaque type Tregistry+F1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Var Reg: TRegistry; //pour la déclaration reg :=Tregistry.Create; reg.Openkey('le chemin de ta clé',True); // ouveruture de la clé mavleur := reg.readBool('le nom de la valeur');
c'est extrement simple vous d'eclarer une variable de type Tstrings;
et vous appleler la fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 var Maliste : TStrings; Reg.RootKey := HKEY_LOCAL_MACHINE //sans les quotte Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DocFolderPaths',False); Reg.GetKeyNames(MaListe);
Juste 'le nom de la valeur' c'est ce que je veut comme resultat.Envoyé par aityahia
vous pouvez utilisez la foction GetValueNames
et vous accéder a vous valeur
exemple :
reste a récupérer le type de la valeur avant de la lire
Code : Sélectionner tout - Visualiser dans une fenêtre à part reg.ReadBool(Maliste[1]);
avec
Reg.GetDataType(Maliste[1])
rdUnknown La valeur de donnée est de type inconnu.
rdString La valeur de donnée est une chaîne
rdExpandString La valeur de donnée est une chaîne long (générlement pour les path)
rdInteger La valeur de donnée est un nombre sur 32 bits.
rdBinary La valeur de donnée est de type binaire,sous n'importe quelle forme.
Désolé pour mon incompétance mais je né pas tré bien compris tu peu reprendre au début Merci
et encore désolé
J'ai fait ça mais j'ai une violation d'accés au niveau de ReadBool.
Je ne comprend pas pourkoi.
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 procedure TForm1.Button1Click(Sender: TObject); var Reg :TRegistry; Maliste : TStrings; begin Reg := TRegistry.Create; Reg.RootKey := HKEY_LOCAL_MACHINE; Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DocFolderPaths', False); Reg.GetKeyNames(Maliste); Reg.ReadBool(Maliste[1]); // La violation est ici Reg.GetDataType(Maliste[1]); ShowMessage(Reg.ReadString(Maliste[1])); Reg.Free; end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 procedure TForm1.Button1Click(Sender: TObject); var Reg :TRegistry; Maliste : TStrings; begin Reg := TRegistry.Create; Reg.RootKey := HKEY_LOCAL_MACHINE; Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DocFolderPaths', False); Reg.GetKeyValues(Maliste); if Reg.GetDataType(Maliste[1]) = RdBinary then Reg.ReadBool(Maliste[1]); ShowMessage(Reg.ReadString(Maliste[1])); Reg.Free; end;
je peut savoir ce que vous voullez faire je vous aiderai mieux,
Maliste[1] n'est qu'un exemple la string liste contiendra tous les valeur de la clé alors pour pouvoir les toutes il faudra les parcourir avec une boucle.
salut
il faut deja creer la liste avant de la passe en paramettre a ta fonction
ensuite
Code : Sélectionner tout - Visualiser dans une fenêtre à part Malist := TStringlist.create;
je ne connait que les fonctions
dans la registry la votre (Reg.GetKeyValues(Maliste); ) elle vient d'ou ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 GetKeyNames GetValueNames
@+ Phil
zut la création de la liste est une évidence j'avai oublier.Envoyé par anapurna
Ok donc c'est peut etre pour ça que j'avait l'erreur je teste et je vous tien au courant
Maintenant j'ai cette erreur:
Et pourtant j'ai fait le programme que tu m'a donnée aityahia.Message: Indice de liste hors limites (1).
Il faut que l'élément de la liste que tu interroges existe, sinon tu as cette erreur.
Pour tester la longueur d'une liste : Length(LaListe);
Précision : une liste commence à l'index 0.
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 var Reg :TRegistry; val:integer; begin Reg := TRegistry.Create; Reg.RootKey := HKEY_CURRENT_USER; Reg.OpenKey('belkhous', True); If Reg.ValueExists('belkhous') then begin val := reg.ReadInteger('belkhous'); val:=val+1; end; Reg.WriteInteger('belkhous', Val); If Reg.ValueExists('belkhous') then Begin Label3.Caption :=IntToStr(val); End; Reg.Free; end;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager