Erreur sur lecture de registre

Résolu
mathieu57100 Messages postés 103 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 9 février 2006 - 28 févr. 2005 à 18:56
mathieu57100 Messages postés 103 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 9 février 2006 - 1 mars 2005 à 13:27
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

WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
28 févr. 2005 à 19:37
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.
3
mathieu57100 Messages postés 103 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 9 février 2006
1 mars 2005 à 13:27
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.
0
Rejoignez-nous