Saber si un dato es un numero?

21/10/2006 - 01:05 por Lord Voldemort | Informe spam
Hola...Grupo...

Veran estoy haciendo mi textbox, y me encuentro que necesito revisar si el
numero que el usuario escribio es un numero "de verdad", ya que al verificar
con la funcion IsNumeric, se cuelan algunas cosas, por ejemplo digamos que
le estoy controlando que el usuario solo digite numeros positivos, si
escribo 000 dice que es digito, o si escribo -0 -0.00 .0 en todos los
casos anteriores son caracteres validos que el usuario puede escribir, pero
que al dejar el control me gustaria convertirlos automaticamente en un solo
cero 0, ya que no existe menos cero(-0), ni tampoco menos cero punto cero
(-0.0) a esto tambien hay que agregarle que si tenemos configurado al estilo
español de españa, no sera un punto sino un coma...

Bueno hay algun mecanimos para verficar y que no se nos cuelen valores como
los anteriormente mensionado, estuve haciendo una lista en un case, pero
pucha el usuairo podria escribir 0000000.0000 jejeje..
alguien tiene algo para validar los datos.. aunque voy a ser pruebas con la
funcion Val de nuestro recordado vbclasico

Saludos..


Que todo este bonito...

Lord Voldemort
Choluteca, Honduras
Visual Studio 2005 Standard

Preguntas similare

Leer las respuestas

#1 Peni \(Francisco\)
21/10/2006 - 07:43 | Informe spam
Si tienes añadido el Namespavce de VisualBasic puedes poner TextBox.text=Val(TextBox.text), de esa forma tenga lo que tenga el Textbox te lo pasará a núimero. Otra forma sería TextBox.text=Double.Parse(TextBox.text)




Saludos. Peni
Para correo: http://cerbermail.com/?9obrPLaweN





Hola...Grupo...
Veran estoy haciendo mi textbox, y me encuentro que necesito revisar si
el numero que el usuario escribio es un numero "de verdad", ya que al
verificar con la funcion IsNumeric, se cuelan algunas cosas, por
ejemplo digamos que le estoy controlando que el usuario solo digite
numeros positivos, si escribo 000 dice que es digito, o si escribo -0
-0.00 .0 en todos los casos anteriores son caracteres validos que el
usuario puede escribir, pero que al dejar el control me gustaria
convertirlos automaticamente en un solo cero 0, ya que no existe menos
cero(-0), ni tampoco menos cero punto cero (-0.0) a esto tambien hay
que agregarle que si tenemos configurado al estilo español de españa,
no sera un punto sino un coma...
Bueno hay algun mecanimos para verficar y que no se nos cuelen valores
como los anteriormente mensionado, estuve haciendo una lista en un
case, pero pucha el usuairo podria escribir 0000000.0000 jejeje..
alguien tiene algo para validar los datos.. aunque voy a ser pruebas con
la funcion Val de nuestro recordado vbclasico
Saludos..
Respuesta Responder a este mensaje
#2 Carlos Gómez
21/10/2006 - 09:05 | Informe spam
A mi modo de ver, el mejor sistema es usar expresiones regulares
Respuesta Responder a este mensaje
#3 SoftJaén
21/10/2006 - 12:02 | Informe spam
"Lord Voldemort" escribió:

Veran estoy haciendo mi textbox, y me encuentro que necesito revisar si el
numero que el usuario escribio es un numero "de verdad", ...

Bueno hay algun mecanimos para verficar y que no se nos cuelen valores
como los anteriormente mensionado, alguien tiene algo para validar los
datos..



Hola:

Aquí tienes el código que yo utilizo para validar el texto de aquellos
controles TextBox que sólo van a almacenar valores numéricos, incluidos el
signo negativo y el carácter decimal existente en la configuración regional
del usuario de la aplicación.

' Variable para detectar si se ha pulsado un carácter decimal.
'
Private IsDecimal As Boolean

Private Sub TextBox1_KeyDown() Handles TextBox1.KeyDown

' En este evento, sólo controlaremos el posible
' carácter decimal pulsado.
'
If e.KeyCode = Keys.Decimal Or _
e.KeyCode = Keys.Oemcomma Or _
e.KeyCode = Keys.OemPeriod Then

IsDecimal = True

Else

IsDecimal = False

End If

End Sub

Private Sub TextBox1_KeyPress( ) Handles TextBox1.KeyPress

' Llamos al procedimiento que validará el carácter pulsado.
'
TeclaPresionada(sender, e, TextBox1, IsDecimal)

End Sub

Si vas a copiar/pegar el ejemplo, ten cuidado con las firmas de los eventos
KeyDown y KeyPress, porque los que aparecen aquí no se corresponden con la
declaración de los mismos. Copia sólo el código fuente.

Por último, el siguiente procedimiento se encargará de validar el carácter
pulsado por el usuario.

Private Sub TeclaPresionada(ByRef sender As Object, _
ByRef e As System.Windows.Forms.KeyPressEventArgs, _
ByRef oTextBox As TextBox, _
ByVal isDecimal As Boolean)

' Caracter separador decimal existente actualmente
' en la configuración regional de windows.
'
Dim separadorDecimal As String = _
Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator

If isDecimal Then
' Si en el control hay ya escrito un separador decimal,
' deshechamos insertar otro separador más.
'
If DirectCast(sender, TextBox).Text.IndexOf(separadorDecimal) >= 0 Then
e.Handled = True
Return
End If

' Insertamos el separador decimal.
'
DirectCast(sender, TextBox).SelectedText = separadorDecimal
e.Handled = True

ElseIf Convert.ToInt32(e.KeyChar) = 8 Then

' Se ha pulsado la tecla retroceso.
'
Return

ElseIf e.KeyChar = "-"c Then

' Únicamente si no está seleccionado el texto del control.
'
If oTextBox.SelectionLength = 0 Then

' Solo permito el signo menos si aparece en primera posición.
'
If oTextBox.Text.Length <> 0 Then e.Handled = True

' Si en el control hay ya escrito un signo menos,
' deshechamos todos los que posteriormente se escriban.
'
If DirectCast(sender, TextBox).Text.IndexOf("-") >= 0 Then
e.Handled = True
End If

End If

ElseIf Not (Char.IsDigit(e.KeyChar)) Then

' No se ha pulsado un dígito.
'
e.Handled = True

End If

End Sub

Hasta la fecha, ... parece ser que funciona bien. :-)

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Respuesta Responder a este mensaje
#4 SoftJaén
21/10/2006 - 13:03 | Informe spam
"SoftJaén" dijo:

Hasta la fecha, ... parece ser que funciona bien.



Lo que yo digo: que por mucho que revise uno el código fuente, nunca se
acaba de depurar. :-(

Probando de nuevo el procedimiento «TeclaPresionada», me acabo de dar cuenta
de un detalle, el cual consiste en que si ya hay escrito un número en el
control de texto, y posteriormente el usuario lo quiere hacer negativo, el
código fuente, tal cual está, no lo permite. Por tanto, simplemente hay que
modificar una línea.

Donde dice:

' Solo permito el signo menos si aparece en primera posición.
'
If oTextBox.Text.Length <> 0 Then e.Handled = True

Deberá decir:

' Solo permito el signo menos si aparece en primera posición.
'
If oTextBox.SelectionStart <> 0 Then e.Handled = True

Bueno, esperemos que funcione, al menos, hasta la próxima sutileza que
aparezca. :-)

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida