Gambas France BETA


Pas de compte ? Incription

Variables image et boolean dans fichier .ini

Ce sujet est résolu.

1
AuteurMessages
didier18#1 Posté le 25/3/2014 à 18:57:44
Bonjour à tous. Je me plante sur un petit soucis de restauration de variables. J'enregistre dans 1 fichier "jwlm.ini" l'état des variables lorsque je quitte le programme principal. Jusque là tout semble fonctionner puisque je peux voir (avec gedit par ex le contenu de ce fichier).
Sauf que... :
Partie 1 La variable "VarFichIni" qui est boolean est enregistrée comme True et pas comme TRUE. Donc lorsque je récupère "VarFichIni" elle est systématiquement à TRUE même si elle est False car elle n'est pas FALSE
Ma 1ère question est donc comment faire pour enregistrer "VarFichIni" en MAJUSCULE ? Ou la lire telle que et la modifier ensuite (question subsidiaire, qu'est-ce qui serait le mieux ?)? Il doit bien y avoir un UCase ou LCase qui doit pouvoir m'aider à y arriver...
Partie 2 Le tableau est constitué de 64 "ModMain.PBX" et maximum de 12 images qui vont remplir les 64 "ModMain.PBX". Enregistrer les 64 images ne me paraît pas être la bonne solution d'autant qu'il y aura forcément des doublons (voir +), que la chaine string sera plus courte que l'image en elle même et que de toute façon les images sont dans le même repertoire que l'appli et qu'elles sont chargées au démarrage. Donc j'enregistre le nom de l'image pour (vouloir) aller la "loader" dans la sub Depart et c'est là que ça ne passe plus... Soit (après plusieurs essais) Gambas attend une picture à la place d'un string, soit la picture ne peut être appliquée à cette classe (utilisation de "VarPictureTMP").

Merci par avance pour vos conseils, explications et ou réponses.


ModMain.module
Public nom As String 'est le nom de l'image qui se trouve dans le repertoire de l'appli
Public VarFichIni As Boolean 'determine si il y a ou non un fichier de sauvegarde
Public FichIni As File 'sert a la lecture et enregistrement auto du fichier ini
Public LignIni As String 'contenu texte d'une ligne dans 1 fichier
Public PBX As New PictureBox[] 'pour la création des PBX (copie des PictureBox)
Public VarPictureTMP As Picture 'pour la copie de l'image

Public Sub mnu_quitter_Click()
Dim i As Integer
ModMain.FichIni = Open Application.Path & "/jwlm.ini" For Create
Print #ModMain.FichIni, "[IMAGES_TABLEAU]"
For i = 0 To 4
Select ModMain.PBX.Picture
Case Picture["A1.png"]
ModMain.nom = "A1.png"
Case Picture["A2.png"]
ModMain.nom = "A2.png"
Case Picture["A3.png"]
ModMain.nom = "A3.png"
Case Picture["A4.png"]
ModMain.nom = "A4.png"
Case Picture["A5.png"]
ModMain.nom = "A5.png"
End Select
Print #ModMain.FichIni, ModMain.nom
Next 'i

Print #ModMain.FichIni, "[FICHIER.INI]"
Print #ModMain.FichIni, ModMain.VarFichIni

Close #ModMain.FichIni 'on ferme le fichier jwlm.ini
Quit
End
'------------------------------------------------------------------------------------------
Public Sub Depart()
Dim i As Integer
ModMain.FichIni = Open Application.Path & "/jwlm.ini" For Input
Line Input #ModMain.FichIni, ModMain.LignIni '[IMAGES_TABLEAU]
Print ModMain.LignIni '[IMAGES_TABLEAU]
For i = 0 To 4
Line Input #ModMain.FichIni, ModMain.LignIni 'on récupère les images
ModMain.nom = ModMain.LignIni 'on affecte la valeur à la variable
ModMain.PBX.Picture = Picture.Load "(" & ModMain.nom & ")"
Next 'i
Close #ModMain.FichIni
End
'------------------------------------------------------------------------------------------
Extrait du fichier jwlm.ini

[IMAGES_TABLEAU]
E15.png
E8.png
E15.png
E9.png
E8.png
[FICHIER.INI]
True
Reivillo#2 Posté le 25/3/2014 à 20:16:05
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »
Partie 1 La variable "VarFichIni" qui est boolean est enregistrée comme True et pas comme TRUE. Donc lorsque je récupère "VarFichIni" elle est systématiquement à TRUE même si elle est False car elle n'est pas FALSE
Essaye toujours d'initialiser tes variables dans leur déclaration.

Et que pour la lisibilité de ton Code,
de le présenter comme par L'exemple ci-dessous, sur le Forum.
Sera Plus visible, au premier coup d'oeil.

Amicalement.

Reivillo.
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
Reivillo#3 Posté le 25/3/2014 à 21:03:51
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »
Soit (après plusieurs essais) Gambas attend une picture à la place d'un string, soit la picture ne peut être appliquée à cette classe (utilisation de "VarPictureTMP").
exemple:
1
Control.picture=picture[ "Chemin vers image" ou Directement variable(String), contenant le Chemin vers Image]

Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
didier18#4 Posté le 26/3/2014 à 00:32:26
Bonjour et merci pour ta réponse Reivillo. J'essaye ton exemple et t'informerai du bon fonctionnement (ou non) avant de passer le sujet en résolu. J'ai finalement trouvé la soluce au souci n°1. IL suffisait de LIRE CORRECTEMENT l'aide contextuelle (que tu m'avais par ailleurs aidé à remettre en place ;-) et qui dit que si l'on converti un boolean en numérique TRUE deviens -1 et FALSE deviens 0. J'ai donc créé une variable integer qui récupère la valeur boolean en -1 ou en 0 et je l'enregistre. A l'ouverture du fichier je récupère le -1 ou le 0 et le re-transforme en TRUE ou en FALSE et ça fonctionne (je post cette réponse elle pourra peut être servir à quelqu'un un jour en attendant mieux).
didier18#5 Posté le 26/3/2014 à 01:11:59
ton exemple fonctionne Reivillo ! MERCI. Je me suis également inspiré d'un post de Flachy Joe Posté le 21/01/2012 à 19:11 titré :[GB3] Component.Load avec chemin absolu. (j'étais passé à coté) important pour les chemins... Je passe le sujet en résolu.
1