DREAMER2208
Messages postés17Date d'inscriptionmardi 2 novembre 2004StatutMembreDernière intervention20 octobre 2005
-
30 mai 2005 à 17:40
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDerniè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 !
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 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.
<