Comunidad Gambas-es
Settings y Collection - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: General (https://gambas-es.org/forum-4.html)
+--- Tema: Settings y Collection (/thread-1092.html)



Settings y Collection - gartumar2 - 12-11-2022

Pues o algo hago mal o Gambas3 se lía con los Settings y las Collection.

Puedes hace algo así:

Código:
Dim aCol as New Collection
aCol = ["1":"aaaaaa", "2":"bbbbbbbbbb", "3":"cccccccc"]

Settings["Tipos/Coleccion"] = aCol

Y funciona ok. Lo guarda como:
[Tipos]
Coleccion={"1": "aaaaaaa","2": "bbbbbbbbbb","3": "cccccccccc"}

Peeeeero. Luego no lo lee. Si haces
Dim aCol as New Collection
aCol = Settings["Tipos/Coleccion"]

Da un error: "No coinciden los tipos: requerido Collection obtenido String"

Pues vaya!!!!!!


RE: Settings y Collection - gartumar2 - 12-11-2022

Me autorespondo con la solución que he encontrado:

Grabar:

[code]


Leer:

[code]

y funciona.


RE: Settings y Collection - tincho - 12-11-2022

Ya que usas colecciones sugiero que uses la clase Config que hicimos entre TercoIDE y yo en lugar de settings.
La venimos usando desde hace bastante tiempo en todos nuestros programas y es muy cómoda para el desarrollo porque te permite agregar variables durante el desarrollo del programa de forma ordenada y luego podes acceder a ellas con el operador "."
Luego, con el método Save() guardas las variables y con el método Load() las recuperas.


RE: Settings y Collection - gartumar2 - 12-11-2022

Sí, ya le había echado un vistazo a la clase Config, pero la había descartado porque necesito algo muy sencillo. No obstante y viendo las limitaciones de Settings, creo que la voy a reconsiderar.

Al final resulta que la solución de JSON no me vale. Al hacer JSON.Decode si se encuentra, como es el caso, con un par como "boolean":"b" salta un error de que boolean es un token invalido.

He optado por una solución chapuza, pero que sí que funciona: separo la colección en dos arrays, una para las key y otra para los valores y guardo estos arrays en Settings. Luego cuando leo los settings vuelvo a crear la coleccion a partir de estos dos arrays.

Un saludo.

(12-11-2022, 15:51)tincho escribió: Ya que usas colecciones sugiero que uses la clase Config que hicimos entre TercoIDE y yo en lugar de settings.
La venimos usando desde hace bastante tiempo en todos nuestros programas y es muy cómoda para el desarrollo porque te permite agregar variables durante el desarrollo del programa de forma ordenada y luego podes acceder a ellas con el operador "."
Luego, con el método Save() guardas las variables y con el método Load() las recuperas.

Gracias, tincho.

Clase Config instada y en uso. Fácil y a la primera.

Un saludo.