Foros del Web » Programación para mayores de 30 ;) » Programación General »

Validacion en c++

Estas en el tema de Validacion en c++ en el foro de Programación General en Foros del Web. Hola, que tal, tengo un formulario en el builder 6.0, y lo que necesito hacer es una validación de cadenas, de numeros y letras. Como ...
  #1 (permalink)  
Antiguo 29/03/2005, 18:13
 
Fecha de Ingreso: marzo-2002
Ubicación: Salta Capital - Actualmente estudiando en Córdoba
Mensajes: 430
Antigüedad: 22 años, 1 mes
Puntos: 0
Validacion en c++

Hola, que tal, tengo un formulario en el builder 6.0, y lo que necesito hacer es una validación de cadenas, de numeros y letras.
Como la podria hacer, es decir tengo 4 campos, 1 para numeros y letras, 2 exclusivamente para numeros, y el ultimo solo para letras. Ahora lo que yo quiero validar es que en los campos de numeros solamente, no ingresen letras, y en los de letras solamente, no ingresen numeros.
Como puedo hacer esto ya que es una cadena? osea un string?
Hay alguna funcion al estilo isalpha?
Yo recuerdo de la facultad que para el tratamiento de caracteres en 16 bit, como ibamos guardando cadenas con una variable tomabamos caracter por caracter, entonces a cada caracter ingresado lo pasabamos por isalpha y de ahi en mas si era correcto una cosa y sino parar el programa o un mensaje de error.
Espero explicarme, yo trate de hacer esto:

if(isalpha(Edit1->Text.c_str())
{
//guardar en un char de [50] la cadena con strcpy pero no me funciona
}

Desde ya Gracias por la ayuda
__________________
Nada es imposible, con un poco de esfuerzo se logran las cosas.-
  #2 (permalink)  
Antiguo 30/03/2005, 02:17
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
isalpha es una funcion de ANSI C pero con eso estas haciendo una comprobacion sobre el primer byte de la direccion de un puntero, ya que Edit->Text.c_str() te devuelve un puntero de char.

Proba asi:
Código:
if (esNumero(Edit1->Text.c_str()))
{
  MessageBox(0, "Resultado", "Es un numero", 0);
}
else
{
  MessageBox(0, "Resultado", "No es un numero", 0);
}

//str = cadena de caracteres terminada en 0 (lo normal)
bool esNumero(char *str)
{
  for (;*str;str++)
  {
    if (!isalpha(*str))
    {
      return false;
    }
  }
  return true;
}
Tambien le podrias agregar una comprobacion para que se salte caracteres que te parezcan validos y especialmente una funcion para que quite todos los espacios (y tabulaciones) tanto delante como detras de la cadena ej. " 456 " me parece que deberia ser un numero valido. Podes usar isdigit para comprobar que sea un numero.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 02/04/2005, 18:37
 
Fecha de Ingreso: marzo-2002
Ubicación: Salta Capital - Actualmente estudiando en Córdoba
Mensajes: 430
Antigüedad: 22 años, 1 mes
Puntos: 0
Muchas gracias Eternal Idol, lo voy a probar cualquier cosa consulto
Adios
__________________
Nada es imposible, con un poco de esfuerzo se logran las cosas.-
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 06:13.