|
Página 1 de 1
|
Problema Al Hacer Sencilla Validación[SOLUCIONADO]
Autor |
Mensaje |
ersolan
Usuario
Registrado: Junio 2010
Mensajes: 5
Edad: 39 Ubicación: Colombia
|
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é.
|
#1 Miercoles, 09 Junio 2010, 01:03 |
|
|
abarzuaf
Ingeniero Programador
Registrado: Octobre 2009
Mensajes: 265
Edad: 54 Ubicación:
|
Re: Problema Al Hacer Sencilla Validación
Hola.
Prueba con este código:
Saludos
última edición por abarzuaf el Miercoles, 09 Junio 2010, 02:31; editado 3 veces
|
#2 Miercoles, 09 Junio 2010, 02:06 |
|
|
fabianfv
Analista Programador
Registrado: Octobre 2009
Mensajes: 495
Edad: 50 Ubicación:
|
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.
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
|
#3 Miercoles, 09 Junio 2010, 18:31 |
|
|
ersolan
Usuario
Registrado: Junio 2010
Mensajes: 5
Edad: 39 Ubicación: Colombia
|
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
|
#4 Jueves, 10 Junio 2010, 19:13 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
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
|
|
|
|
|