![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
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 |
#3
|
|||
|
|||
Hola:
Código sacado de trucomanía: Código:
function NIF(DNI: String): Char; begin Result := Copy('TRWAGMYFPDXBNJZSQVHLCKET',StrToInt(DNI) mod 23+1,1)[1]; end; 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. |
#4
|
||||
|
||||
![]() En lugar de recorrer toda la cadena, yo dejaría algo como:
Código mucho mas sencillo y fácil de leer... Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate Última edición por jachguate fecha: 29-05-2004 a las 21:33:06. Razón: agregar etiquetas... |
#5
|
||||
|
||||
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 Última edición por roman fecha: 29-05-2004 a las 21:36:38. |
![]() |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
![]() |
|