• Martes 12 de Noviembre de 2024, 21:14

Autor Tema:  Validar Dni  (Leído 5582 veces)

aguilot_21

  • Miembro activo
  • **
  • Mensajes: 30
    • Ver Perfil
Validar Dni
« en: Jueves 31 de Marzo de 2005, 19:25 »
0
Buenas,

Alguien me puede decir como puede validar un DNI, que los 8 primeros sean enteros y el otro una letra??

Gracias

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Validar Dni
« Respuesta #1 en: Domingo 3 de Abril de 2005, 07:05 »
0
Podrias tomar los caracteres en un Edit, almacenarlos en un array de char y recorrerlos con un puntero... por medio de comparaciones podrias saber si los primeros 8 son numeros y el ultimo es un caracter. Saludos :hola:
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

CiRRuS

  • Miembro MUY activo
  • ***
  • Mensajes: 218
    • Ver Perfil
    • http://zirrus.es
Re: Validar Dni
« Respuesta #2 en: Domingo 3 de Abril de 2005, 11:27 »
0
Además, recuerda que la letra va es única para cada combinación de números de 8 cifras. Mira a ver si en Internet encuentras el algoritmo que te dice cual es la letra a partir de la ristra de números.

Nos vemos :hola:
Core Dumped
zirrus.es

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Validar Dni
« Respuesta #3 en: Domingo 3 de Abril de 2005, 12:14 »
0
Hola

Puedes hacer como te dice Jhonatan y meterlo en un *char y recorrerlo, para saber si es letra o numero puedes usar la libreria ctype.h que es ansic y supongo que tambien estara en c++builder estas son las funciones que proporciona:

http://c.conclase.net/librerias/libreria.php?lib=ctype

En tu caso puedes usar isdigit o isalpha para discriminar el caracter

Otra forma seria meter los DNI en strings y compararlos directamente

un saludo  :hola:

aguilot_21

  • Miembro activo
  • **
  • Mensajes: 30
    • Ver Perfil
Re: Validar Dni
« Respuesta #4 en: Sábado 9 de Abril de 2005, 09:16 »
0
Tengo otro problema, recorro los caracteres uno a uno mirando si es numero o no pero con el ultimo siempre me da error. Este es el codigo, a ver si me podeis ayudar:

oid __fastcall TAltaImp::Button1Click(TObject *Sender)
{
        String Numeros,Lletra;
        char c;
        bool result;
        int i;
        Numeros=(DNI->Text).SubString(1,8);
        Lletra=(DNI->Text).SubString(8,9);
        result=true;
        i=1;

while ((Numeros!=Null()&&(i<=8) && (result==true)))
        {
        DNI->Text ="DNI incorrecte";
        c=Numeros;
        result=(c>=0)||(c<=9);
        i=i+1;
        }
        if (result==true)
        {
        DNI->Text ="DNI correcto";
        }
        else
        {
        DNI->Text ="DNI incorrecto";
        }

}

Gracias

shackletta

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Re: Validar Dni
« Respuesta #5 en: Martes 12 de Abril de 2005, 18:42 »
0
Hola, creo que en lugar de empezar con i=1; deberías empezar con i=0; ya que en los arrays el primer indice siempre es el 0. Por eso en la última iteración del bucle, en lugar de estar accediendo al último entero del DNI estás accediendo a la letra, y por eso pone result = false.

Espero que sea eso.

Un saludo.
[size=109]Sólo sé que esto no va a terminar conmigo, sin embargo yo sí que lo terminaré a él.[/size]