Gambas France BETA


Pas de compte ? Incription

Fichier Setting

1
AuteurMessages
spheris#1 Posté le 28/5/2016 à 21:21:38
Bonsoir,
Dans mon fichier Settings j'ai ceci :

[CATEGORIE1]
var1=[False,False,False,False,False,True,True,True,False,True,False,False,False,False,False]


Quand je modifie une valeur dans le soft et que je fais:
1
2
3
montableau AS NEW booleen[15]
Settings["CATEGORIE1/var1"] = montableau
Settings.save()

var1 n'est pas sauvegardé.
Quand je le fais avec une simple variable type booleen ca marche.
Ou est le probleme?

gb3.8.4

Gambette#2 Posté le 29/5/2016 à 11:42:08
Salut,
je verrai plutôt un truc du genre : Settings["CATEGORIE1/var1"] = montableau[0],montableau[1], montableau[2] etc...
jeanyvon#3 Posté le 29/5/2016 à 18:02:19
Gambas? Ma! Et gustosalut,
Je ferrais plutôt:

1
2
3
4
5
FOR EACH element IN montableau
INC i

settings["truc\var" & i]= element
NEXT
Vieillir? On peut retarder mais pas y échapper!
Gambette#4 Posté le 29/5/2016 à 19:36:14
Salut jeanyvon,
ça marchera si tu fais une ligne de setting par dimension du tableau mais si tu veux mettre les 15 variables sur la même ligne Settings["CATEGORIE1/var1"] ça n'ira pas.
spheris#5 Posté le 30/5/2016 à 23:58:11
Ce qui est curieux,c'est que toutes ces solutions marchent... 1 seule fois à la création.
Puis après une fois la variable créée dans le fichier conf, impossible de la réécrire, l'effacer ou autre.
D'où peut venir le problème?
;)
jeanyvon#6 Posté le 31/5/2016 à 16:39:12
Gambas? Ma! Et gustohello!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
PUBLIC SUB Button1_Click()

DIM montableau AS Boolean[]
DIM element AS VARIANT
DIM i AS INTEGER = 0
montableau = NEW BOOLEAN[10]

montableau.Add(TRUE)
montableau.Add(TRUE)
montableau.Add(FALSE)
montableau.Add(TRUE)
montableau.Add(FALSE)
montableau.Add(TRUE)
montableau.Add(TRUE)
montableau.Add(FALSE)
montableau.Add(TRUE)
montableau.Add(TRUE)

FOR EACH element IN montableau

INC i
SELECT CASE i
CASE 11
settings["Truc/V1"] = element
CASE 12
settings["Truc/V2"] = element
CASE 13
settings["Truc/V3"] = element
CASE 14
settings["Truc/V4"] = element
CASE 15
settings["Truc/V5"] = element
CASE 16
settings["Truc/V6"] = element
CASE 17
settings["Truc/V7"] = element
CASE 18
settings["Truc/V8"] = element
CASE 19
settings["Truc/V9"] = element
CASE 20
settings["Truc/V10"] = element
END SELECT

NEXT

IF Settings["Truc/V2"] THEN Message.Info("c'est bon")
END SUB


ça ,ça fonctionne.

le fichier est dans : user/home/.config/gambas3/"nom de l'application".conf
c'est un fichier texte.
Vieillir? On peut retarder mais pas y échapper!
spheris#7 Posté le 16/6/2016 à 20:08:48
Merci Jean yvon mais toutes les codes précédents fonctionnent.
Seulement il est possible de créer une liste dans le fichier settings la première fois de type :

1
2
[categorie1]
toto = [1.2,1.3,1.6]


Puis il est impossible de le modifier par la suite.
Ce doit être un bug de gb.settings.
Je vais en informer le concepteur de gb.settings.
Merci pour votre aide.
;)
Gambette#8 Posté le 16/6/2016 à 20:48:48
Settings["CATEGORIE1/toto"] = "1.2, 1.3, 1.6"
DIM900#9 Posté le 3/9/2016 à 17:48:41
Hello Spheris

Voici un petit exemple.. J'espère répondre à ton problème.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
PUBLIC SUB Main()

DIM hSetting AS NEW Settings("/tmp/" & Application.Name & ".conf")
DIM var1 AS Boolean[]
DIM i AS INTEGER

var1 = NEW BOOLEAN[15]

FOR i = 0 TO 14
var1[i] = TRUE
NEXT

hSetting["Variable/var1"] = var1
hSetting.Save

FOR i = 0 TO 14 STEP 2
var1[i] = FALSE
NEXT

hSetting["Variable/var1"] = var1
hSetting.Save
END
Je voudrai une gambas grillée ;) :lol!:
Merci :cheers: :lol!:
DIM900#10 Posté le 3/9/2016 à 17:51:24
Petit bug de mon navigateur.
Je voudrai une gambas grillée ;) :lol!:
Merci :cheers: :lol!:
gambix#11 Posté le 8/9/2016 à 09:33:49
Faire simple !
[Cat1]
Values=[True,False,True,True,False,False,True,False,False,True]




1
2
3
4
5
6
7
8
9
10
PUBLIC SUB Main()

DIM b AS Boolean[]

b = Settings["Cat1/Values"]
b[0] = TRUE
Settings["Cat1/Values"] = b
Settings.Save

END



Ce code ne permet pas de corriger la valeur de Cat1/Values car en fait cette valeur n'est pas modifiée. En interne elle ne contient que le référence du tableau mais pas les valeurs de celui-ci. DOnc comme b est toujour le même tableau Setting considère que La valeur n'est pas modifiée et dans mon cas qu'aucune valeur n'a été modifiée ... donc inutile de réécrire le fichier conf.

http://gambaswiki.org/wiki/comp/gb.settings/settings/save?l=fr

La solution est de générer une copie de la variable ce qui forcera le changement de valeur du setting.

1
2
3
4
5
6
7
8
9
10
PUBLIC SUB Main()

DIM b AS Boolean[]

b = Settings["Cat1/Values"].Copy() ' <--- ici
b[0] = TRUE
Settings["Cat1/Values"] = b
Settings.Save

END



Moins de texte dans une signature c'est agrandir son espace.
spheris#12 Posté le 9/9/2016 à 23:33:20
Alors là Gambix, chapeau !!!!!!
J'ai enfin la ''Vrai soluce'' à mon problème Je cours faire un petit tuto...
Trop fort ! Par contre comment se fait-il qu'il n'y ait rien dans la documentation à ce sujet?
DIM900#13 Posté le 12/9/2016 à 19:54:24
Hello

Effectivement, je n'avais pas imaginé utiliser ".copy" a ce niveau..

Merci bien Gambix...
Je voudrai une gambas grillée ;) :lol!:
Merci :cheers: :lol!:
gambix#14 Posté le 15/9/2016 à 14:53:52
Faire simple !Revision: 7900
http://sourceforge.net/p/gambas/code/7900
Author: gambas
Date: 2016-09-08 21:24:00 +0000 (Thu, 08 Sep 2016)
Log Message:
-----------
[GB.SETTINGS]
* BUG: Always mark a settings object as modified when putting an array or a collection in any key.


C'est corrigé dans la svn. Si la ligne est un tableau elle sera enregistrée systématiquement
Moins de texte dans une signature c'est agrandir son espace.
1