![]() |
Verificación de dni
Hola!!
Estoy intentando verificar un dni (introducido en un TDBEdit) con su letra, para ello tengo q dividir el número entre 23 y calcular el resto (con mod) , pero lo q no sé como hacer es coger sólo el número del TDBEdit (almacenar en una variable solo el número) xq se introduce todo seguido: número y letra. Gracias por adelantado. |
Desconozco cuál es el formato del dni pero puedes usar la función Copy para extraer la porción que corresponda al número. Por ejemplo, si el formato fuese, por decir algo, "LLLNNNLL" (L - letra, N - número) usarías
Dni := Copy(Edit1.Text, 4, 3) es decir, extraes 3 caracteres a partir del cuarto. // Saludos |
Hola:
Código sacado de trucomanía: Código:
function NIF(DNI: String): Char; eDNI := Trim(EditDNI.Text); eNumerosDNI := Copy(eDNI,1,Length(eDNI)-1); El problema aquí es que también el usuario te puede poner letras en la parte numérica, por lo que antes deberías recorrer caracter a caracter toda la cadena y verificar que excepto el último caracter los demás son números. Suerte. |
En lugar de recorrer toda la cadena, yo dejaría algo como:
Código mucho mas sencillo y fácil de leer... Hasta luego. ;) |
Curioso:
La expresión StrToInt(DNI) mod 23+1 da siempre un número entre 1 y 23 y la cadena, si mis ojos cuentan bien, tiene 24 caracteres. ¿No se puede omitir la última T? Por otra parte me parece que luna ya sabía todo esto, sólo preguntó como extraer la parte del número. // Saludos |
La franja horaria es GMT +2. Ahora son las 13:19:16. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi