Fichier INI et Boolean [Résolu]

Signaler
Messages postés
9
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
20 décembre 2013
-
Messages postés
9
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
20 décembre 2013
-
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...
A voir également:

5 réponses

Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
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
Messages postés
9
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
20 décembre 2013

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.
Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019
15
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 !) ?
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
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
Messages postés
9
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
20 décembre 2013

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...