Fichier INI et Boolean [Résolu]

Messages postés
9
Date d'inscription
mardi 10 octobre 2006
Dernière intervention
20 décembre 2013
- - Dernière réponse : tuss
Messages postés
9
Date d'inscription
mardi 10 octobre 2006
Dernière intervention
20 décembre 2013
- 2 avril 2013 à 19:27
Bonjour à Tous...

J'ai un petit problème pour lire et écrire des valeurs booleans dans un fichier '.INI' avec DELPHI7.

Je stock dans un fichier 'monfichier.ini' des Strings, Integers, Booleans.

Avec les Strings et les Integers tout marche bien.

C'est avec les Booleans que ça marche pô.

----------
Exemple:
Stocker dans l'.INI l'état d'une Checkbox qui se nomme : ckbTest

j'écrit dans l'.INI :

WriteBool('CheckBox', 'Test', ckbTest.checked);

A l'écriture tout marche bien. Cette routine ce situe dans l'évènement (OnCreate de la fenetre ou se trouve la CheckBox)

je jette un coup d'oeil dans le fichier '.INI' :

[CheckBox]
Test=1

-----------
Lecture du fichier '.INI'

ckbTest.checked:=ReadBool('CheckBox', 'Test', false); // valeur false par défaut

Cette routine ce situe dans l'évènement (OnDestroy de la fenêtre où se trouve la CheckBox)

A l'exécution, j'obtient une erreur 'Access violation at adresse...) et le programme démarre.
A chaque commande de mon programme (clavier, souris), j'obtient toujours cette erreur et le programme continue de fonctionner. Je suis obliger de passer par le gestionnaire de tache pour le fermer.

Si je supprime cette ligne de code, mon programme marche de nouveau sans erreur.

Après lecture et re-lecture de l'utilisation de l'instructione (ReadBool) dans l'aide de Delphi, il me semble que je l'utilise correctement.

Pourriez vous m'aider à résoudre ce problème ?

Merci...
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
3
Merci
Bonjour,
oui, il faudrait plus de code.
car l'écriture de l'ini sur le OnDestroy n'est pas habituel..
le mieux est de le mettre sur la fermeture de la forme
car il y a souvent plusieurs formes en présence et ceci permet une modification des valeurs
pendant le fonctionnement normal de l'application.

cantador

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 98 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_cantador
Messages postés
9
Date d'inscription
mardi 10 octobre 2006
Dernière intervention
20 décembre 2013
0
Merci
Re-bonjour à Tous...

Décidemment en ce moment ça va pa fort.

En plus de mettre trompé dans mon message, j'ai fait des fautes niveau 6ème.

L'écriture du fichier .INI se fait dans (OnDestroy)
La lecture du fichier .INI se fait dans (OnCreate)

Je viens de trouver la solution.

Il faut passer par un ReadInteger pour la lecture d'un boolean !
1 = true
0 = false

Je ne vois donc pas l'intérêt de l'utilité de l'instruction ReadBool.

Pouvez-vous m'en dire plus.

Merci.
Commenter la réponse de tuss
Messages postés
423
Date d'inscription
samedi 17 mai 2003
Dernière intervention
4 août 2018
0
Merci
Salut,

Il faudrait plus de code. Apparemment, le problème se situe ailleurs...
A tout hasard, au moment de l'écriture, le path du fichier .ini est-il valide (vérifie quand même !) ?
Commenter la réponse de korgis
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
0
Merci
on peut même aussi prévoir un bouton réalisant l'opération
évitant ainsi la fermeture de la forme.

on peut donc résumer les évènements en jeu :

- onCreate
- onClose
- OnClick

cantador
Commenter la réponse de cs_cantador
Messages postés
9
Date d'inscription
mardi 10 octobre 2006
Dernière intervention
20 décembre 2013
0
Merci
Hello...

Bon, j'ai creusé l'affaire et j'ai trouvé la (ma) solution.

Après réflexion je me suis dit si l'instruction ReadBool() existe c'est
quelle doit fonctionner et servir à quelque chose.

Mon application n'a qu'une Form et quand je la quitte, Le fichier .INI sert à sauvegarder différents paramètres :
(Position de la Fenêtre, Checkbox, quelques Variables, etc...)

J'ai donc mis ma routine (.INI) dans l'évènement OnClose de la Form et cela fonctionne très bien.

Merci à tous...
Commenter la réponse de tuss

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.