C'est en réponse à une question du Forum.
Voici une procédure pour lire une valeur de type REG_MULTI_SZ à l'aide d'un TRegistry.
Ce n'est possible qu'en lecture car le TRegistry ne peut créer de valeur REG_MULTI_SZ. Mais c'est peut-être suffisant pour certains.
Pour essayer le source ci-dessous il suffit d'ajouter un bouton et un memo sur une fiche.
Source / Exemple :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
Uses Registry;
{$R *.dfm}
Procedure LectureREG_MULTI_SZ(Reg:TRegistry;Valeur:String;Valeurs:TStrings);
Var Buf : Array Of Byte;
Taille : Integer;
i : Integer;
Chaine : String;
Begin
// On efface la liste
Valeurs.Clear;
// On recherche la taille des données
Taille:=Reg.GetDataSize(Valeur);
If Taille>0
Then Begin
// Ajustement du tableau à la taille reçue
SetLength(Buf,Taille);
// Lecture des valeurs sous forme binaire
Reg.ReadBinaryData(Valeur,buf[low(Buf)],Taille);
// Conversion des chaines AZT multiples en TStrings
Chaine:='';
// Taille-2 au lieu de Taille-1 pour ignorer le double zéro final
For i:=0 To Taille-2 Do
Begin
If Buf[i]=0
Then Begin
Valeurs.Add(Chaine);Chaine:='';
End
Else Begin
Chaine:=Chaine+Char(Buf[i]);
End;
End;
// Libération du tableau
Buf:=Nil;
End;
End;
procedure TForm1.Button1Click(Sender: TObject);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey('\Software\Essai\', False) then
begin
LectureREG_MULTI_SZ(Reg,'VALEUR',Memo1.Lines);
Reg.CloseKey;
end;
finally
Reg.Free;
end;
end;
end.
Conclusion :
Je n'ai essayé que sous XP, (W95 W98 et WMe n'ont pas de valeurs de type REG_MULTI_SZ ) mais je pense que ça fonctionne pareil avec W2000.
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.