Ce sujet est résolu.
1 | |||
Auteur | Messages | ||
---|---|---|---|
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 FALSEEssaye 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 LÀ. 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:
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 LÀ. 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 |