Erreur sur lecture de registre [Résolu]

Signaler
Messages postés
103
Date d'inscription
jeudi 24 juin 2004
Statut
Membre
Dernière intervention
9 février 2006
-
Messages postés
103
Date d'inscription
jeudi 24 juin 2004
Statut
Membre
Dernière intervention
9 février 2006
-
bonjour
j'ai un ptit prob...

Je sauvegerde dans la base de regitre la position d'un TTrackBar par le code suivant:
Registre.WriteString('delai', IntToStr(tbDelai.Position));

lorsque je lance moj application, les paramètres sauvegardes dans la base de registre son chargé. tous les paramètres se chargent correctement sauf celui de TTrackBar, pourtant le code est correct (je pense...):

tbDelai.Position := StrToInt(Registre.ReadString('delai'));

j'ai un message qui me dit "Le projet XXX a provoqué unclasse d'exeption ECOnvertErroe avec le message "" n'est pas une valeur entière correcte'. Processus stoppé. Utilisez Pas-à-pas ou Executer pour continuer."

voilà, alors j'ai beau regarder, je vois pas mon erreur...
en plus je suis sur que c'est un truc tout bête...

en tout cas merci d'avance pour votre aide.

2 réponses

Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
S'il n'existe pas d'entrée de registre du nom passé à la méthode ReadString, celle ci renvoie une chaîne vide. D'où l'exception de conversion!!

Question : La clé a-t'elle correctement était écrite dans le registre ?

Je suppose que ta variable Registre est de type TRegistry

As tu bien Ouvert et fermer la clé du registre ?
Exemple :
if ( Registre.OpenKey( '\Software\MonAppli\', true) then
begin
Registre.WriteString('delai', IntToStr(tbDelai.Position));
// A la fermeture de la clé, celle ci est écrite dans le registre.
Registre.CloseKey;
end ;

Si, l'écriture est correcte, à la relecture es tu sur de "pointer" sur la même clé ?

var
S : string ;

Registre.OpenKey( '\Software\MonAppli\', false ) ;
S := Registre.ReadString( 'delai' ) ;
try
tbDelai.Position := StrToInt( S ) ;
except
// Echec Conversion
end ;

Cordialement.
Messages postés
103
Date d'inscription
jeudi 24 juin 2004
Statut
Membre
Dernière intervention
9 février 2006

au lieu "if ( Registre.OpenKey( '\Software\MonAppli\', true) then"
j'ai testé la présence de la clé avec
"if Registre.KeyExists('Software\MonAppli') then"

merci.