https://foro.gambas-es.org/viewtopic.php?f=1&t=451
-----------------------------------
Cubel
Lunes, 22 Febrero 2010, 17:32

Archivo Settings (Solucionado)
-----------------------------------
Hola, buenas tardes, tengo un problema con el archivo deb generado. La aplicación que estoy haciendo, lo primero que hace es ir a preguntar unos datos al archivo Settings. Como es la primera vez que la ejecutas, debe mostrarte un cartel como que no hay datos, y pregunta si quieres configurar el programa en ese momento. Si le das OK, pues te aparece un form donde tienes unos campos a rellenar. El problema es que en mi deb cuando lo instalas en otro equipo deja de funcionar cuando dices que quieres configurarlo ahora. No salta error, pero nunca carga el form... Que puedo hacer?


-----------------------------------
jguardon
Lunes, 22 Febrero 2010, 17:45

Re: Archivo Settings
-----------------------------------
Es un problema de diseño de tu aplicación.

Debes analizar con cuidado que es lo que pretendes hacer en caso de que no haya archivo settings.

Si no hay, créalo con unos valores por defecto, o bien, cuando tomas los valores, especifica valores por defecto en la misma sentencia:

settings["Miclave/Mivalor", valor_por_defecto]

Si el usuario decide no introducir los valores, entonces cierra tu aplicación. Si los introduce (y los validas) al cerrarse el formulario [b]modal[/b] de configuración, entonces abres el formulario principal y lo primero que haces es leer o asignar los settings. Recuerda que debes chequear el valor devuelto por el formulario modal al cerrarse y actuar en consecuencia.

Debes de tener cuidado con los tipos de variables que deben corresponder al tipo de dato almacenado (Boolean, Integer, Float, String, etc)

Saludos


-----------------------------------
Cubel
Lunes, 22 Febrero 2010, 17:49

Re: Archivo Settings
-----------------------------------
Ok, voy a probar, lo que no entiendo es porque no me carga el form...
La cuestión es que si tenia los datos era cargar el form de login, si no, cargar el de configuración... 
Voy a probar lo que me dices ok?

Después te digo algo!
Gracias de nuevo!!!
____________
EDITADO:
------
Antes de probar lo tuyo, e copiado el archivo .conf y detectar la configuración la detecta, pero no me muestra el login...
Porque puede ser esto?


-----------------------------------
shordi
Lunes, 22 Febrero 2010, 20:01

Re: Archivo Settings
-----------------------------------
Sube el código del form. Si no, es imposible decir nada.


-----------------------------------
Cubel
Lunes, 22 Febrero 2010, 22:04

Re: Archivo Settings
-----------------------------------
ok mañana lo subiré después de probarlo otra vez en el trabajo. Que ahora lo he probado en otros 3 ordenadores i funciona bien...
nose porque. Una cosa, un programa creado en gambas2.20 en ubuntu 9.10 puede funcionar en ubuntu 9.04?


-----------------------------------
h4k
Lunes, 22 Febrero 2010, 22:09

Re: Archivo Settings
-----------------------------------
quizás se deba a problema de librerías, de otro modo no me lo explico... sería un error raro en el form.


Trata de actualizar la distribución del computador en que no te funciona, quizás ocupas alguna característica que no está disponible en la versión que tienes instalada.

Lo extraño es que el .deb te genera las dependencias automáticamente, a si que es extraño  :|


-----------------------------------
Cubel
Lunes, 22 Febrero 2010, 22:54

Re: Archivo Settings
-----------------------------------
Nose mañana mirare haber otra vez. Y ya digo algo!

_________
EDITADO:
------------------

Haber mas o menos se cual es el problema pero no se el porque pasa eso.
La cuestión es lo el programa pregunta si existe una variable en el archivo settings y si esta en Si es que ha entrado al programa antes entonces carga las opciones, si no pues debes configurarlo tu. Como me a dicho un compañero del foro, lo que he hecho es asignar unas variables ficticias aunque despues el usuario tenga que asignar las buenas, o los datos buenos de conexion.

El problema esta en que si pulsas si, deberia ir al form de configuracion, si pulsas que no quieres configurar, deberia abrirte el form de login. No me abre ninguno de los dos. Mejor dicho el de login es el primero que se abre que es el cual pregunta si existen variables, si dices que si se minimiza y abre el form configuracion y si no pues nada te deja en el login. El problema que el login en algunos ordenadores no funciona, es decir, nunca aparece pero sin embargo si que carga el message.question que envio en el form de login. El programa esta probado en varios ordenadores y funciona en: 1 portatil, con ubuntu 9.10 instalado, y 3 sobremesas con windows xp que corren el virtualbox con ubuntu 9.10. Y no funciona en un sobremesa con ubuntu 9.10 y otro sobremesa con ubuntu 9.04. 

el codigo del form login es el siguiente. No se que esta mal, posiblemente vosotros veais cosas que soy incapaz de ver por mi poca experiencia.
[code linenumbers=false syntax=gambas]
' Gambas class file



PRIVATE SUB cargarDatos()
DIM respuestaBase AS Result 
DIM i AS Integer 
respuestaBase = conexionDB.conectar("SELECT id,usuario,contrasenya,nombre FROM " & Settings["BaseDatos/tablalogin"] & " WHERE usuario='" & usuario_txt.Text & "' AND contrasenya='" & contrasenya_txt.Text & "'") ''Llamo a la funcion conectar y envio la sentencia 
IF respuestaBase.Count > 0 THEN
 variables.id = respuestaBase!id
variables.nombre = respuestaBase!nombre
variables.usuario = respuestaBase!usuario
variables.contrasenya = respuestaBase!contrasenya
respuestaBase = conexionDB.conectar("UPDATE " & Settings["BaseDatos/tablalogin"] & " SET  `conectado` =  'Si' WHERE  `" & Settings["BaseDatos/tablalogin"] & "`.`id` = '" & variables.id & "'")
login.Close
formularioMadre.Show
  ELSE
  IF usuario_txt.Text = "pcmrepinfo" THEN
  '' mostrar diagnostico de la configuracion y de la conexion a internet.
  ELSE
  conectando.CLOSE
  ME.Minimized = FALSE
  Message("El usuario y/o la contraseña son incorrecos. \n Intentalo de nuevo")
  ENDIF
  ENDIF
conexionDB.datosBase.Close ''Cierro la conectar 
END 


PUBLIC SUB Form_Open()
  DIM respuestaPreguntaInicio AS Integer
  ME.Center
 IF Settings["PrimeraVez/abiertoAntes"] = "si" THEN
  funciones.init
  ELSE
Settings["EmpresaInicial/anyoEmpresa"] = "2010"
Settings["EmpresaInicial/nombreEmpresa"] = "Sin Empresa"
Settings["EmpresaInicial/idEmpresa"] = "0000"
Settings["EmpresaInicial/codigoEmpresa"] = "0000"
Settings["BaseDatos/tablaMatriculas"] = "matriculas"
Settings["BaseDatos/tablaDocumentaciones"] = "documentaciones"
Settings["BaseDatos/tablaAvisos"] = "avisos"
Settings["BaseDatos/tablaIncidencias"] = "incidencias"
  respuestaPreguntaInicio = Message.Question("No existen datos de conexión,\nquiere crearlos ahora?", "Aceptar", "Cancelar")
  IF respuestaPreguntaInicio = 1 THEN
  funciones.cargarPanelConfInicial("mysql", "mysql.ejemplo.com", "usuarios", "mantenimientoVehiculos", "documentaciones", "avisos", "tipoVehiculos", "incidencias")
  ME.Minimized = TRUE
   ELSE
   funciones.init
  ENDIF
 ENDIF
END



PUBLIC SUB configuracion_btn_Click()
info_txt.Text = ("Modificando la configuración de conexión")
  configuracion.Show
END

PUBLIC SUB aceptar_btn_Click()
info_txt.Text = ("Comprobando la configuración")
ME.Minimized = TRUE
cargarDatos()
END

PUBLIC SUB cerrarAplicacion_btn_Click()
  login.Close
END
[/code]
Me gustaría recalcar, que a pesar de que es muy probable de que el código tenga muchas cosas innecesarias o que incluso este programando con malas costumbres, el programa funciona en varios ordenadores como he mencionado antes, no entiendo el porque en otros no, ya que en ambos casos, esta probado en pc's que corren Ubuntu en nativo y en virtual box.


-----------------------------------
Cubel
Jueves, 25 Febrero 2010, 21:58

Re: Archivo Settings
-----------------------------------
Nadie encuentra nada raro? es por seguir programando o dedicarme a ver si encuentro algún fallo....


-----------------------------------
soplo
Jueves, 25 Febrero 2010, 22:57

Re: Archivo Settings
-----------------------------------
veo varias cosas raras ahí pero la primera es eso de un result.count.

count aplicado a un result te devuelve la cantidad de registros, no si está o no conectado. En tu caso lo que interesa es si has establecido o no conexión así que debería preguntar por conexionDB.connected().

Count puede devolver valores cero si no has llenado el recordset y la forma segura de llenarlo es hacer un movelast. Además estás perdiendo tiempo y recursos en contar los registros de un recordset que pudiera no estar conectado. A tí no te interesa cuantos registros sino si estás conectado.

Un saludo


-----------------------------------
Cubel
Jueves, 25 Febrero 2010, 23:03

Re: Archivo Settings
-----------------------------------
Las conexión a la base de datos me funcionan todas bien. Yo no tengo problemas con las conexiones, tengo problemas en que el form en unos ordenadores se muestra y en otros no, de todas formas la conexión no es lo primero, la conexión valida un usuario y una contraseña, pero si no pulsas aceptar no la realiza. La cuestión es que no me muestra el form, en los ordenadores que me lo muestra funciona bien la conexión.


-----------------------------------
shordi
Viernes, 26 Febrero 2010, 00:11

Re: Archivo Settings
-----------------------------------
No veo nada manifiestamente mal (aunque coincido con soplo en que .count no es precisamente lo indicado para comprobar una conexión), pero sí me parece... "optimista" esto:
[code linenumbers=false syntax=gambas]
PUBLIC SUB Form_Open()
  DIM respuestaPreguntaInicio AS Integer
  ME.Center
 IF Settings["PrimeraVez/abiertoAntes"] = "si" THEN
  funciones.init
  ELSE ....
[/code]
Yo probaría la confirmación de la existencia del fichero "as is", no confiando a la clase Settings su existencia.
Es decir, Settings["PrimeraVez/abiertoAnes"] = "si" es algo redundante cuando resulta que si no lo ha abierto el fichero no existe.

Yo intentaría algo así como:
[code linenumbers=false syntax=gambas]
PUBLIC SUB Form_open() 
dim frm as form

IF not Exist(Settings.Path &/ Application.Name & ".conf") THEN 
    cad = "[VariablesEntorno]\n"
    cad &= "Variable=\"valor por defecto\" \n"
    cad &= "otravariable=\"otro valor" \n"
    cad &= "resto de las variables de entorno=\"resto de los valores\" \n"
     File.Save(Settings.path &/ Application.Name & ".conf", cad)
    frm = new formulario_de_rellenar_los_parametros
    frm.showmodal
ENDIF
Resto de procedimientos...
[/code]

Es decir las cosas de una en una. A lo mejor es dar vueltas para conseguir lo mismo, pero puedes ver en cada momento lo que está ocurriendo.

A parte de eso puede que el fallo lo tengas en la función funciones.init, que no especificas qué hace.
 
No sé si te ayudo o te lío... pero así no te aburres.

Saludos


-----------------------------------
Cubel
Viernes, 26 Febrero 2010, 08:36

Re: Archivo Settings
-----------------------------------
Ok voy a probar. El init solo hace que cargar lo insertado en settings sobre unas variables, después cuando tenga un momento insertare el código de la función init. De todas formas lo de comprobar si existe el archivo lo voy a probar, ya que no sabia que se podía hacer. Lo de la conexión, con el .count no pretendo comprobar si existe conexión, yo con la función "conexionBD.conectar" ya crea la conexión, acto seguido envía los parámetros insertados "conexionbd.conectar ("parámetros")" por eso no necesito saber si esta la conexión abierta, porque a través de esta función la abre entonces pienso que seria una perdida de tiempo comprobar si esta abierta ya que es la primera vez que se ejecuta la función y como digo lo primero abre la conexión y después envía los parámetros.

_________
EDITO
----------------

Este es el código de funciones.init
[code linenumbers=false syntax=gambas]
''---------------------------
''Funcion INIT - para cargar todos los Settings
''---------------------------
PUBLIC SUB init()
  
   variables.anyoEmpresa = Settings["EmpresaInicial/anyoEmpresa"]
 variables.nombreEmpresa = Settings["EmpresaInicial/nombreEmpresa"]
  variables.idEmpresa = Settings["EmpresaInicial/idEmpresa"] 
  variables.codigoEmpresa = Settings["EmpresaInicial/codigoEmpresa"] 
  variables.tablaDEmatriculas = Settings["BaseDatos/tablaMatriculas"]
  variables.tablaDocumentaciones = Settings["BaseDatos/tablaDocumentaciones"] 
  variables.taAviso = Settings["BaseDatos/tablaAvisos"] 
   variables.tablaIncidencias = Settings["BaseDatos/tablaIncidencias"]
   variables.tablaTipoVehiculos = Settings["BaseDatos/tablaTipoVehiculos"]
  
END 
[/code]


-----------------------------------
shordi
Viernes, 26 Febrero 2010, 09:46

Re: Archivo Settings
-----------------------------------
Ok. Lo del .count no tiene mayor importancia, tan sólo piensa que count en realidad es un método cuyo resultado, además, no es muy fiable. Yo probaría con .available, que es más inmediato y seguro.

Saludos.


-----------------------------------
Cubel
Viernes, 26 Febrero 2010, 11:00

Re: Archivo Settings
-----------------------------------
available? que datos trae? yo el count mas que nada lo utilizo porque si insertas un usuario y contraseña y con el count te da 0, lógicamente es tontería seguir porque el usuario algo a insertado mal. Available, responde algún numero o algo por el estilo?

Gracias.

_____
Editado
-----------

Ejecutando el programa desde la consola en uno de los ordenadores con ubuntu 9.10 instalado (me refiero a que no es un virtualbox ni nada por el estilo)
me muestra el siguiente error en la consola, si alguien entiende algo que me lo diga ya que igual aqui podemos saber lo que pasa pero yo no lo entiendo aun:
cturia@cturiaServer:~/Escritorio/pcmrep-0.1.6.orig/src/PCMRep$ PCMRep.gambas

(PCMRep.gambas:28755): Gtk-CRITICAL **: gtk_window_resize: assertion `width > 0'failed

(PCMRep.gambas:28755): Gdk-CRITICAL **: _gdk_pixmap_new: assertion `(width != 0) && (height != 0)' failed

(PCMRep.gambas:28755): Gdk-CRITICAL **: gdk_gc_new: assertion `drawable != NULL' failed

(PCMRep.gambas:28755): Gdk-CRITICAL **: gdk_drawable_get_size: assertion `GDK_IS_DRAWABLE (drawable)' failed

(PCMRep.gambas:28755): Gdk-CRITICAL **: gdk_gc_new: assertion `drawable != NULL' failed

(PCMRep.gambas:28755): Gdk-CRITICAL **: gdk_gc_set_foreground: assertion `GDK_IS_GC (gc)' failed

(PCMRep.gambas:28755): Gdk-CRITICAL **: gdk_gc_set_background: assertion `GDK_IS_GC (gc)' failed

(PCMRep.gambas:28755): Gdk-CRITICAL **: gdk_draw_rectangle: assertion `GDK_IS_DRAWABLE (drawable)' failed

(PCMRep.gambas:28755): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed

(PCMRep.gambas:28755): Gdk-CRITICAL **: gdk_gc_set_background: assertion `GDK_IS_GC (gc)' failed

(PCMRep.gambas:28755): Gdk-CRITICAL **: gdk_gc_set_foreground: assertion `GDK_IS_GC (gc)' failed

(PCMRep.gambas:28755): Gdk-CRITICAL **: gdk_draw_layout: assertion `GDK_IS_DRAWABLE (drawable)' failed

(PCMRep.gambas:28755): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed

(PCMRep.gambas:28755): GdkPixbuf-CRITICAL **: gdk_pixbuf_new: assertion `width > 0' failed

(PCMRep.gambas:28755): Gdk-CRITICAL **: gdk_pixbuf_get_from_drawable: assertion `src != NULL' failed

(PCMRep.gambas:28755): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed

(PCMRep.gambas:28755): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_pixels: assertion `GDK_IS_PIXBUF (pixbuf)' failed

(PCMRep.gambas:28755): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_width: assertion `GDK_IS_PIXBUF (pixbuf)' failed

(PCMRep.gambas:28755): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_height: assertion `GDK_IS_PIXBUF (pixbuf)' failed
Fallo de segmentación

Bueno pues creo que ya no puedo aportar nada mas respecto al problema... Si necesitáis mas datos me los podéis pedir.


-----------------------------------
shordi
Viernes, 26 Febrero 2010, 13:33

Re: Archivo Settings
-----------------------------------
Available te indica si hay registro disponible, devuelve cierto o falso.

¿Qué versión de Gambas usas? Recuerdo que cuando salió ubuntu 9.04 habían cambiado ciertas cosas de la librería GTK que no eran compatibles y que no se arreglaron hasta la versión 2.0.18 (cito de memoria el numerito).
Me huele a que es eso... Si los demás ordenadores tienen otras versiones, casi seguro.


-----------------------------------
Cubel
Viernes, 26 Febrero 2010, 13:50

Re: Archivo Settings
-----------------------------------
Pues te cuento todo un poco haber si me puedo acordar de todo:
Programo la aplicación con la versión gambas2.20, en el ordenador portátil de mi casa con ubuntu 9.10 nativo, y en el trabajo con virtualbox emulando ubuntu 9.10. en ambos funciona.
Y lo pruebo en:
En dos sobremesas con virtual box y ubuntu 9.10 que funciona.
Y no funciona en un sobremesa con ubuntu 9.10 nativo, y en otro sobremesa con ubuntu 9.04 nativo.
el error es mostrado es del sobremesa con Ubuntu 9.10 nativo

_______
EDITO
-----------------

En el sobremesa que me falla con Ubuntu 9.10 en su primera instalación tubo la 9.04 pero se actualizo, puede ser por eso que no funciona, pero mi portátil en el cual programo, su primera versión fue la 8.10, de ahi se actualizo a la 9.04 y por el tiempo a la 9.10 y si que funciona....


-----------------------------------
shordi
Viernes, 26 Febrero 2010, 19:21

Re: Archivo Settings
-----------------------------------
Ni idea oiga, desde luego es algo del gráfico, pero por lo demás...

Mándale los errores al Bonoît, a ver qué dice...


-----------------------------------
Cubel
Lunes, 01 Marzo 2010, 16:42

Re: Archivo Settings
-----------------------------------
Como puedo mandarle el error?


-----------------------------------
shordi
Lunes, 01 Marzo 2010, 18:33

Re: Archivo Settings
-----------------------------------
Pues tendrás que pasarte por el foro de nabbles en http://old.nabble.com/Gambas-f3425.html y dejar allí tu problema, el código y el error, supongo.


-----------------------------------
fabianfv
Jueves, 04 Marzo 2010, 19:11

Re: Archivo Settings
-----------------------------------
Cubel, dos cosas. Primero, los informes de error o solicitudes de ayuda en inglés debes enviarlos a la lista de correo principal:

https://lists.sourceforge.net/lists/listinfo/gambas-user

Si escribes directamente en los foros Nabble, nadie leerá tu mensaje.

Segundo, me da la impresión que esos errores de gtk pueden deberse a problemas en la instalación o configuración de Gambas o sus dependencias. Según leí en tus mensajes hay pc's en las que tu programa funciona sin problemas y otras en las que obtienes esos errores de gtk, te sugiero pruebes compilar tu programa usando gb.qt y lo instales nuevamente en esas pc's problemáticas, para estimar el origen del fallo.

No recuerdo qué versión de Gambas usas, por lo que te sugiero instales Gambas 2.20 utilizando el [url=http://foro.gambas-es.org/viewtopic.php?f=6&t=441]script de jguardon que hace que la instalación desde los fuentes sea algo trivial.

Saludos cordiales.


-----------------------------------
Cubel
Jueves, 04 Marzo 2010, 23:25

Re: Archivo Settings
-----------------------------------
Ok ok gracias mañana por la mañana lo probare... Y weno la versión de gambas es la 2.20 que jguardon me ayudo a instalar antes de subir el script a la web.... Mañana lo pruebo y os comento ok?

Gracias!!!


-----------------------------------
Cubel
Lunes, 08 Marzo 2010, 13:05

Re: Archivo Settings
-----------------------------------
Ok, gracias. Ahora si que me funciona en todos los ordenadores... He cambiado los componentes como me has dicho y me funciona...

Gracias a todos!


