https://foro.gambas-es.org/viewtopic.php?f=1&t=19
-----------------------------------
soplo
Domingo, 13 Septiembre 2009, 21:52

Trabajar  Con Configuraciones
-----------------------------------
Los archivos de configuración almacenan variables que van a  ser utilizad s por la aplicación para  definir procesos o personalizar tareas.

En gambas, trabajar con ellos es muy fácil. Solo hay que agregar el componente gb.settings y a  partir de ahí se manejan estos archivos con mucha  facilidad porque disponemos del objeto settings.

[size=14][color=darkgreen]Propiedades[/color][/size]

[color=darkred]Settings.path[/color]
identifica  la ubicación del archivo (y el nombre). A menos que se especifique se utilizará  una ubicación por defecto que es Directorio de usuario/.config/gambas
El nombre del archivo por defecto será
nombre_aplicacion.conf
Así que si no se especifica , el archivo de configuración estará  en ~/.config/gambas/aplicacion.conf

[size=14][color=darkgreen]Métodos[/color][/size]

[color=darkred]Save[/color]
Si cambia el valor por defecto habrá que especificar settings.path y grabar.
Si se cambia el valor de alguna variable de entorno de la aplicación bastará con grabar. 
método sa ve

'Creación de usua rio y cla ve por defecto

Settings["Usuario/ user"] = "Usuario" --> crea la sección usuario y una variable user con el valor indicado
Settings["Usuario/UserClave"] = " clave" ---> en la sección usuario crea una variable clave con el valor indicado
' Acceso a base de  datos
Settings["base/BdUser"] = "Datos" ----> en la seccion base crea una variable bduser con el valor indicado
Settings("base/Tipo" ]="mysql" ---> en la sección  base crea una variable Tipo con el valor indicado
Settings["base/BdUserClave"] = "1234" ----> en la sección base crea una variable bduserclave con el valor indicado
Settings["Base/Host" ] = "localhost " ----> en la sección base crea una variable host con el valor indicado
Settings["Base/Puerto"] = "3306" ----> en la sección base crea una variable puerto con el valor indicado
Settings.save ----> graba un archivo de configuración con esas variables

Una  vez creado veremos en ~/.config/gambas un archivo con el nombre del proyecto y .conf que tiene el siguiente contenido
[Usuario]
user= "Usuario"
UserClave="clave"

[base]
BdUse r="Datos"
BdU se rClave="1234"
BdTipo="mysql"
Host= "localhost"
Puerto="3306"

Si antes de grabar se especificó settings.path entonces la ubicación y el archivo serán el especificado.

[color=darkred]Settings[/color]
Es tan fácil como llamar al objeto Settings con la  clave y subclave que quiero leer.

[code linenumbers=false]Dim  Base as string ,T ipo as string,  Usuario as string ,  Clave as string ,  Puerto as string
Dim Cn as new connecti on
Cn.type=settings["Base/Tipo","mysql "]
Cn.Host=settings["Base /Host","localhost "]
Cn.Port=settings["Base/Puerto","3306" ]
Cn. name="nombre_base_de_datos"
Cn. login=settings[ Usuario/user,"usuario "]
Cn. password=settings [Usuario/UserClave" ,"1234"]
Cn. open
[/code]
En este caso se obtienen los parámetros para una conexión a base de datos de un archivo .CONF previamente creado.
El método settings tiene dos valores. El primero es el valor que obtendrá  si puede leer el archivo CONF. El segundo es el valor que obtendrá  si no puede leerlo.

[color=darkred]Reload[/color]
Settings.reload
Vover a los parámetros especificados en el conf


-----------------------------------
netking86
Lunes, 14 Septiembre 2009, 11:50

Re: Trabajar  Con Configuraciones
-----------------------------------
Sensacional. Yo guardaba y cargaba ese tipo de opciones manualmente en ficheros. Esto es mucho mas comodo, estupendo

Muy buen aporte


-----------------------------------
CanihoJR
Martes, 15 Septiembre 2009, 14:17

Re: Trabajar  Con Configuraciones
-----------------------------------
si quiero q un label muestre el contenido de una de esas "variables"?

label1.text = Settings["base/BdUserClave"] :?: 

o

label1.text = Reload["base/BdUserClave"] :?: 

Muy buen tip :) empezaré a usarlo :D
PD: hay q tener algo en cuenta con los permisos? o por defecto no corre ningun tipo de problemas? :)


-----------------------------------
soplo
Martes, 15 Septiembre 2009, 15:13

Re: Trabajar  Con Configuraciones
-----------------------------------
[quote]
si quiero q un label muestre el contenido de una de esas "variables"?

label1.text = Settings["base/BdUserClave"]
[/quote]
Correcto.

Utilizas reload cuando has cambiado en memoria algunas variables y no has grabado. Reload lee el archivo de configuración y pone las variables de entorno conforme a lo que ha leído.

[quote]hay q tener algo en cuenta con los permisos? o por defecto no corre ningun tipo de problemas? [/quote]
Estamos en un entorno linux no en windows. Aquí las cosas que se ejecutan es porque se tiene derecho a ejecutarse. Desde un punto de vista profesional lo correcto es crear un usuario para ejecutar esta aplicación o bien tener un usuario capaz de ejecutar estas herramientas. El usuario que ejecuta la aplicación obviament tiene derecho a escribir en su home.

Si otro usuario tiene derecho a ejecutar la aplicación se creará el entorno en su home. Conviene tener en cuenta que la primera vez que se ejecuta la aplicación no hay un entorno. Es por ello que settings[variable, valor_por_defecto) la primera vez debería ser grabado (settings.save) para que se grabe el fichero de configuración con los valores por defecto.


-----------------------------------
CanihoJR
Martes, 15 Septiembre 2009, 15:18

Re: Trabajar  Con Configuraciones
-----------------------------------
Eeeeeeeesto quiere decir, q seria conveniente ejecutar un Reload antes de cada vez q se quiera capturar un valor para asegurarte deque está bien cargado, o casi mejor aun, usar un reload despues de un save para cargar la nueva configuracion instantaneamente...... ajam.... lo dicho, eres el amo! ^^ 

q de ideas me dá esto :D


-----------------------------------
soplo
Martes, 15 Septiembre 2009, 15:39

Re: Trabajar  Con Configuraciones
-----------------------------------
No 

La primera vez que ejecutas lees las variables de entorno según el ejemplo propuesto[quote]
Settings["Usuario/ user"] = "Usuario" --> crea la sección usuario y una variable user con el valor indicado
Settings["Usuario/UserClave"] = " clave" ---> en la sección usuario crea una variable clave con el valor indicado
' Acceso a base de datos
Settings["base/BdUser"] = "Datos" ----> en la seccion base crea una variable bduser con el valor indicado
Settings("base/Tipo" ]="mysql" ---> en la sección base crea una variable Tipo con el valor indicado
Settings["base/BdUserClave"] = "1234" ----> en la sección base crea una variable bduserclave con el valor indicado
Settings["Base/Host" ] = "localhost " ----> en la sección base crea una variable host con el valor indicado
Settings["Base/Puerto"] = "3306" ----> en la sección base crea una variable puerto con el valor indicado [/quote]

Como el archivo de configuración no existe no ha podido leer el archivo por lo que asume los valores por defecto. En el caso de "Usuario/user" el valor por defecto es "Usuario" y con ello ya puedes trabajar.

Si quieres que esa información quede escrita tendrás que hacer settings.save para grabarla. Igualmente si el usuario accede a alguna opción de preferencias o lo que sea y hace cambios.  Al hacer settings.save se escribe el archivo que tendrá este aspecto
[quote]
[Usuario]
user= "Usuario"
UserClave="clave"

[base]
BdUse r="Datos"
BdU se rClave="1234"
BdTipo="mysql"
Host= "localhost"
Puerto="3306" [/quote]
Y la siguiente vez que ejecutes ya no cogerá los valores por defecto sino lo que pudo leer en el archivo de configuración.


-----------------------------------
Cubel
Jueves, 14 Enero 2010, 23:04

Re: Trabajar  Con Configuraciones
-----------------------------------
Estoy mirando el tema de guardar configuración y tengo una duda.

Parece muy útil, pero, ¿solo se puede guardar usuario y contraseña, y los datos de las BD? ¿O también puedes poner todo tipo de configuraciones?

Gracias!


-----------------------------------
soplo
Jueves, 14 Enero 2010, 23:24

Re: Trabajar  Con Configuraciones
-----------------------------------
No no, tu guardas lo que te de la santa gana.

El ejemplo guarda un nombre de usuario y una clave, pero yo tengo aplicaciones que guardan muchas otras cosas. Solo tienes que hace una prueba e inventarte la variable que quieras y luego puedes ir a ~/.config/gambas y allí verás gambas.conf (la configuración de gambas) y tu proyecto.conf (la configuración de tu proyecto).

Es muy simple y muy práctico.


-----------------------------------
Cubel
Jueves, 14 Enero 2010, 23:27

Re: Trabajar  Con Configuraciones
-----------------------------------
Ok ok, pues voy ha hacer mi primer archivo de configuración!!
Gracias

_____
editado
-----------------

Lo he probado, y es facilisimo. 
Gracias, ahora con esto puedo tener toda la configuración de la aplicación en un momento...


-----------------
Editado
-------------------------

Hola buenos días, tengo un problema! donde puedo buscar el archivo de configuración si la aplicación aun no la tengo instalada? lo digo porque yo la estoy probando pulsando F5, pero me gustaría ver lo que inserta en el archivo de configuración.


-----------------------------------
netking86
Sabado, 23 Enero 2010, 19:25

Re: Trabajar  Con Configuraciones
-----------------------------------
[quote]Hola buenos días, tengo un problema! donde puedo buscar el archivo de configuración si la aplicación aun no la tengo instalada? lo digo porque yo la estoy probando pulsando F5, pero me gustaría ver lo que inserta en el archivo de configuración.[/quote]


usuario/.config/gambas


-----------------------------------
Cubel
Domingo, 24 Enero 2010, 11:37

Re: Trabajar  Con Configuraciones
-----------------------------------
Ok, gracias!!


-----------------------------------
CanihoJR
Miercoles, 17 Agosto 2011, 14:29

Re: Trabajar  Con Configuraciones
-----------------------------------
como puedo cambiar el path?   Settings.path solo es modo lectura, como le asigno otro path diferente?


-----------------------------------
arubioc
Miercoles, 29 Febrero 2012, 00:13

Re: Trabajar  Con Configuraciones
-----------------------------------
A mi tambien me ocurre lo mismo, settings.path es solo lectura.
No puedo cambiar la ruta del fichero de configuracion.


-----------------------------------
jguardon
Miercoles, 29 Febrero 2012, 00:47

Re: Trabajar  Con Configuraciones
-----------------------------------
Hay una forma, creando una nueva instancia de la clase settings:

Declaramos una variable de clase:

[code linenumbers=false syntax=gambas]Public mysettings as Settings[/code]


Luego en el form_load o form_new hacemos lo siguiente:

[code linenumbers=false syntax=gambas]mysettings = NEW Settings(User.Home &/ ".config/micarpeta/mifichero.conf", "Nombre de mis Settings")[/code]

El último argumento es un nombre que aparecerá en la cabecera del fichero settings y es opcional.

Para usarlo en la aplicación:

[code linenumbers=false syntax=gambas]mysettings["unaclave/unvalor"] = "loquesea"
mysettings.Save()[/code]


Espero que se entienda la idea, saludos


