Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Problema Al Hacer Sencilla Validación[SOLUCIONADO]
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Problema Al Hacer Sencilla Validación[SOLUCIONADO] 
 
Hola a todos este es mi segundo mensaje, tengo un problemita con gambas pues apenas lo estoy conociendo, resulta que como trabajo con visual basic.net se me es fácil trabajar con gambas de hecho le encuentro unas similitudes, en fin tengo el siguiente código y tengo un problema:

Citar:

PUBLIC SUB _new()

END

PUBLIC SUB Form_Open()
Numero1.SetFocus
END

PUBLIC SUB bSuma_Click()

  DIM a, b, centinela AS Integer
  centinela = 1
  IF Numero1.Text = "" OR Numero2.Text = "" THEN
     centinela = centinela + 1
     IF centinela = 3 THEN
        Message.Warning("3 intentos fallidos, la aplicación se cerrará por seguridad")
        ME.Close
     ELSE
        Message.Info("Debe ingresar un numero!")
     ENDIF
  ELSE
  a = Numero1.Text
  b = Numero2.Text
  Resultado.Text = a + b
  ENDIF
  
END

PUBLIC SUB bSalir_Click()

  ME.Close

END


Valido que los textbox vayan vacios, cuando los encuentra así uso una variable centinela que se incrementa en 1, luego pregunto que si el centinela llega a 3 envíe un mensaje en este caso warning indicando que se cerrará la aplicación, pero no sigue el orden sino que lo omite, no se si el operador de igualdad sea ese o sea otro pero intento usar == para comparar si es igual y de inmediato entra como si el centinela ya tuviera valor 3, muestra la ventana warning con el mensaje y se cierra.

Si pueden guiarmen y decirme en que me he equivocado les agradeceré.
 



 
ersolan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Al Hacer Sencilla Validación 
 
Hola.

Prueba con este código:

Private contador AS Integer = 0

PUBLIC SUB Button1_Click()

IF TextBox1.Text = "" OR textbox2.Text = "" THEN
     message.Info("Debe ingresar 2 numeros")
     contador = contador + 1  
    IF contador = 3 THEN
        Message.Warning("3 intentos fallidos, la aplicacion se cerrará")
        ME.close
    END IF
ELSE
    textbox3.text = Str((Val(TextBox1.text) + Val(textbox2.Text)))
END IF


END


Saludos
 



 
última edición por abarzuaf el Miercoles, 09 Junio 2010, 02:31; editado 3 veces 
abarzuaf - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Al Hacer Sencilla Validación 
 
Ersolan: al declarar la variable centinela dentro del procedimiento bSuma_Click limitas su ámbito de existencia a esa rutina por lo que cuando ésta termina, el valor guardardo en centinela se pierde. Para que ello no ocurra tienes que ampliar el ámbito de dicha variable, declarándola al principio de la clase del formulario; así la variable tendrá existencia en cualquier rutina escrita dentro de la clase del formulario.

PRIVATE centinela AS Integer

PUBLIC SUB Form_Open()
Numero1.SetFocus
END

...

 

Otras cosas que debes considerar es que gambas evalúa una cadena vacía a FALSE y que realiza automáticamente la conversión de tipos de datos de las variables (incluyendo la propiedad Text de los controles TextBox. También que gambas inicializa automáticamente las variables según su tipo de datos (Boolean -> FALSE, Intenger -> 0, String -> "").

PUBLIC SUB bSuma_Click()
'DIM a, b, centinela AS Integer

'IF Numero1.Text = "" OR Numero2.Text = "" THEN
IF Numero1.Text OR Numero2.Text THEN

...

'a = Numero1.Text
'b = Numero2.Text
'Resultado.Text = a + b


'La conversión de los tipos de datos se realiza en función del operador, en este
'caso el operador suma "+" (aquí no hay ambigüedad, como sucede en
'Visual Basic, porque el operador suma es diferente del operador de concatenación "&")
Resultado.Text = Numero1.Text + Numero2.Text
 


Además podrías evitar la necesidad de lanzar el mensaje error: "Debe ingresar un numero!" controlando la propiedad Enabled del control Button.

Por último, creo que hay un error de concepto en cuanto al control de los intentos fallidos que realizas. Intentas controlar que los controles TextBox no estén vacíos, cuando parece claro que deberías verificar sus valores contra un valor que se sabe es válido (por ejemplo, una contraseña).

De modo que tu código podría ser:
'En el diseñador de formularios debe establecerse la propiedad Group
'de los TextBox Numero1 y Numero2 a "Numeros" para obtener un único
'controlador de eventos con ese nombre.

PRIVATE centinela AS Integer

PUBLIC SUB Form_Open()
  bSuma.Enabled = FALSE
  Numero1.SetFocus  
END

PUBLIC SUB Numeros_Change()
  bSuma.Enabled = IsDigit(Numero1.Text) AND IsDigit(Numero2.Text)
END

PUBLIC SUB bSuma_Click()
DIM ValorValido AS Integer
  'ValorValido es un nombre genérico para un valor que no conozco
  'porque no sé que intentas hacer.
  IF Numero1.Text + Numero2.Text = ValorValido THEN
    Resultado.Text = Numero1.Text + Numero2.Text  
  ELSE
    centinela += 1
    IF centinela = 3 THEN
      Message.Warning("3 intentos fallidos, la aplicación se cerrará por seguridad")
      ME.Close
    ENDIF
  ENDIF
END
 

 




===================
Cómo programar con Gambas

Speed Books: informática libre.
 
última edición por fabianfv el Miercoles, 09 Junio 2010, 18:35; editado 1 vez 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Al Hacer Sencilla Validación 
 
Hola le hice unas modificaciones al codigo, lo que intento hacer con el centinela es esto:

si el usuario envia uno o los dos textbox vacíos 3 veces debe aparecer un mensaje diciendo:
"3 intentos fallidos, la aplicación se cerrará por seguridad"
Es algo que quise hacer y que en visual basic funciona claro se que no puedo comparar vbasic con gambas aunque prácticamente sean similares

Citar:
PUBLIC SUB Numeros_Change()
  bSuma.Enabled = IsDigit(Numero1.Text) AND IsDigit(Numero2.Text)
END
  

quise no usar la orden anterior sino hacerlo simple, reemplazar eso con el centinela pero ya esta solucionado:

Citar:

' gambas class file
PRIVATE centinela AS Integer = 0

PUBLIC SUB _new()

END

PUBLIC SUB Form_Open()
'bSuma.Enabled = FALSE
Numero1.SetFocus
END
' PUBLIC SUB Numeros_Change()
 ' bSuma.Enabled = IsDigit(Numero1.Text) AND IsDigit(Numero2.Text)
'END
PUBLIC SUB bSuma_Click()

  DIM a, b AS Integer

  IF Numero1.Text = "" OR Numero2.Text = "" THEN
     centinela = centinela + 1
     IF centinela = 3 THEN
        Message.Warning("3 intentos fallidos, la aplicación se cerrará por seguridad")
        ME.Close
     ELSE
        Message.Info("Debe ingresar un numero!")
     ENDIF
  ELSE
  a = Numero1.Text
  b = Numero2.Text
  Resultado.Text = a + b
  ENDIF
  
END

PUBLIC SUB bSalir_Click()

  ME.Close

END



por cierto gracias fabian omití hacer la variable centinela de tipo public, me dices esto:

Citar:
Gambas evalúa una cadena vacía a FALSE y que realiza automáticamente la conversión de tipos de datos de las variables (incluyendo la propiedad Text de los controles TextBox. También que gambas inicializa automáticamente las variables según su tipo de datos (Boolean -> FALSE, Intenger -> 0, String -> "").


Realmente Funciona, gambas es buenisimo.
 



 
última edición por ersolan el Jueves, 10 Junio 2010, 21:47; editado 2 veces 
ersolan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Validación En Un Textbox Miguel1813 General 7 Jueves, 28 Julio 2011, 20:03 Ver último mensaje
RodSanRey
No hay nuevos mensajes ¿ Existe Una Forma Sencilla De Hacer Un Z... Shell General 3 Viernes, 05 Julio 2013, 04:21 Ver último mensaje
jousseph
No hay nuevos mensajes Como Hacer Que Un Programa Gambas Abra En ... tincho Aplicaciones/Fragmentos de Código 17 Miercoles, 25 Septiembre 2019, 18:03 Ver último mensaje
gambafeliz
No hay nuevos mensajes Como Hacer Que Un Formulario Retorne [SOLU... tincho Aplicaciones/Fragmentos de Código 33 Miercoles, 12 Febrero 2020, 15:42 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron