ReadBinaryData

DREAMER2208 Messages postés 17 Date d'inscription mardi 2 novembre 2004 Statut Membre Dernière intervention 20 octobre 2005 - 30 mai 2005 à 17:40
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 30 mai 2005 à 18:23
J'ai besoin de lire une valeur de type binaire dans la base de
registre. J'ai donc créé une fonction pour sa. Celle-ci doit me
retourner la valeur lue, seulement la taille de cette valeur est
variable. J'ai donc écrit ce code :





function bdr_lect_bin(key: string; value: string): Tstringlist;

begin

result := TStringList.Create;

reg := Tregistry.create;

reg.RootKey := HKEY_CURRENT_USER;

reg.OpenKey(key,false);

reg.ReadBinaryData(value,result,sizeof(result));

reg.free;

end;



Seulement la valeur retournée est nulle. J'aimerais savoir d'où peut
venir mon erreur. J'ai aussi essayé de retourner une valeur de type
array of byte :



function bdr_lect_bin(key: string; value: string): array of byte;

begin

...

end;



Delphi bug a la compilation...

Je désespere un peu la....si qqun connai la réponse !



Merci d'avance, et bonne prog à tous !

1 réponse

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
30 mai 2005 à 18:23
Je ne suis pas sûr qu'affecter un contenu binaire à un eliste de chaines soit une bonne idée
En plus, SizeOf(Result) quand le TStringList est vide ne peut pas renvoyer une grande valeur, non ?
Solution proposée :

function bdr_lect_bin(key: string; value: string): string;
var
S : array[0..255] of char;
Reg: TRegistry;
begin
Result := EmptyStr;
reg := TRegistry.create;
try
reg.RootKey := HKEY_CURRENT_USER;
reg.OpenKey(key,false);
if reg.ReadBinaryData(value,S,sizeof(S)) > 0 then
Result := S;
finally
reg.free;
end;
end;

NB : le titre de ton message a été changé pour être plus proche de tes préoccupations.

<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
<
0
Rejoignez-nous