Connaître le type d'une valeur du registre

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 219 fois - Téléchargée 30 fois

Contenu du snippet

Le registre Windows a 3 types de données (string, DWORD, binary), seulement on peut pas toujours savoir a l'avance de quel type sera une valeur. ALors voici un bout de code qui nous retourne le type de valeur.
Créez un nouveau projet, et ajoutez-y 2 Edit.

Source / Exemple :


uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Registry; // Ajouter 'Registry' pour acceder aux fonctions spécifiques au registre

(...)

var
  Form1: TForm1;
  reg: TRegistry; // peut aussi etre déclarer dans la procedure concernée suivant les besoins en portée.

(...)

procedure TForm1.FormCreate(Sender: TObject);
begin
     reg := TRegistry.Create;
     reg.RootKey := HKEY_CURRENT_USER;
     reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', False);

     case reg.GetDataType('StartMenuLogoff') of
          rdUnknown       : Edit1.Text := 'Unknown';
          rdString        : Edit1.Text := 'String';
          rdExpandString  : Edit1.Text := 'ExpandString';
          rdInteger       : Edit1.Text := 'Integer';
          rdBinary        : Edit1.Text := 'Binary';
     end;
     Edit2.Text := IntToStr(reg.ReadInteger('StartMenuLogoff'));
     reg.CloseKey;
     reg.Free;
end;

Conclusion :


Pour plus d'infos, TRegistry dans l'aide de delphi.

A voir également

Ajouter un commentaire Commentaires
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
y'a un truc qui me chiffone dans ton code.

c'est que tu vas chercher le type, mais tu n'adapte pas le READ avec le type correspondant.

String (REG_SZ) = ReadString
Integer (REG_DWORD) = ReadInteger
Binary (REG_BINARY) = ReadBinary

ect...
Messages postés
329
Date d'inscription
mercredi 4 avril 2001
Statut
Membre
Dernière intervention
8 décembre 2009
6
nikel, c ce k'il me fallait :-D
Messages postés
16
Date d'inscription
jeudi 17 janvier 2002
Statut
Membre
Dernière intervention
5 février 2002

ca doit etre a cause de la valeur lue, ca marche sur win2k chez moi, si t'as une autre version il se peut que la clée n'existe pas.
J'ai pris cette valeur comme exemple.
Messages postés
128
Date d'inscription
mardi 26 juin 2001
Statut
Membre
Dernière intervention
8 février 2005

Ça ne fait que crasher, au
Edit2.Text := IntToStr(reg.ReadInteger('StartMenuLogoff'));
Dommage :(

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.