FTP   CCD     Enlaces   Buscar   Trucos   Trabajo   Foros
 
 
 Secciones

Regístrate
   
 Usuario
 Pass
Recuérdame
 
   

 Novedades

Ajedrez
 
 Trucos
Palabras de búsqueda En títulos y autor En títulos texto y autor
Buscar en...  
Ordenación Fecha Título Autor Número Categoría
Para insertar trucos debes estar registrado, puedes registrarte aquí
 

 Últimos trucos
 Fecha  Num  Título Categoría  Autor
C
   
18/09/12 586 Prueba Delphi - Aplicación Yomero
2
 
05/03/10 585 Delphi al Límite 2009 Delphi - Varios Fernando Solís
8
 
18/01/10 584 Que un CheckListBox funcione como un CheckBox Delphi - Componentes rrf
4
 
06/04/09 582 Evitar multiples instancias de nuestra aplicacion Andreas Hausladen - Dr. Chamale
4
 
30/03/09 581 Eliminar acentos y otros agregados de un caracter/cadena Delphi 2009 Delphi - Cadenas Cheerpipe
2
 
16/03/09 580 Noche estrellada Delphi - Gráficos coso
4
 
26/02/09 578 Calendario de Semana Santa C++ Builder - Varios escafandra
3
 
17/02/09 577 Cuadros de diálogo con botones personalizados Delphi - Varios Lord Delfos
9
 
28/01/09 576 Evento OnMinimize del formulario Delphi - OOP Neftalí -Germán Estévez-
5
 
29/12/08 575 Pasar un HICON a un TIcon o a un archivo C++ Builder - Varios escafandra
0
 
26/12/08 574 Modificar tipo, estilo, tamaño de letra en TMenu y TPopUpMenu Delphi - OOP Dr. Jorge H Chamale
1
 
05/12/08 572 Crear objetos mediante su clase coso
0
 
01/12/08 571 Correr Directx9 en tu ejecutable C++ Builder - Varios Grand Master Dario
0
 
29/11/08 570 Query filtrada por texto Delphi - Bases de Datos coso
1
 
28/11/08 525 Función ftp_upload_file PHP - Varios Julián
1
 
26/11/08 560 WINI (Windows Ini Files) Delphi - Ficheros y disco Khronos
0
 
30/10/08 104 ¿Cómo puedo colorear un TButton? Delphi - OOP Julián
3
 
30/10/08 342 DCU no encontrado Delphi - Componentes Julián
0
 
30/10/08 524 Función recordcount PHP - Varios Julián
1
 
27/10/08 516 Graficas 3D Delphi - Gráficos coso
7
 
Encontrados 506, mostrando del 1 al 20

Los numeros del Pasaporte / DNI
Datos del autor 2484 Veces visitado
Fecha última revisión 08/06/2006 13:31
Autor Domingo Seoane
Enviado por seoane

El Documento Nacional de Identidad (DNI) aquí en España tiene por la parte posterior una serie de números destinados a ser leídos de forma automática, es decir por una maquina, estos números que para muchos resultaban todo un enigma e incluso dieron pie a alguna teoría conspiranoica contienen una serie de datos como el numero de identificación, fecha de nacimiento, etc. Además de unos dígitos de control.

Aquí tenemos un ejemplo extraído de esta pagina http://jpf.sdf1.org/dni/
Código [-]
IDESP12345678Z3<<<<<<<<<<<<<<<
7410150M0903226ESP<<<<<<<<<<<4
DE<TAL<Y<CUAL<<FULANITO<<<<<<<

Línea 1: TIPO PAIS NUMERO dc
Línea 2: NACIMIENTO dc SEXO CADUCIDAD dc PAIS dc

*dc = Digito de Contol


Pues bien, me he tomado la libertad de implementar el algoritmo que genera los Dígitos de Control en Delphi. Aquí os dejo la función por si a alguien le interesa:
Delphi [-]
function Control(Str: string): string;
var
  i, j , k: integer;
const
  m: array[0..2] of Integer = (7,3,1);
begin
  k:= 0;
  Str:= Uppercase(Str);
  for i:= 1 to Length(Str) do
  begin
    if not TryStrToInt(Str[ i ],j) then
      if not (Str[ i ] in ['A'..'Z']) then
      begin
        Result:= '';
        Exit;
      end else j:= Ord(Str[ i ]) - Ord('A');
    k:= k + (j*m[(i-1) mod 3]);
  end;
  Result:= IntToStr(k mod 10);
end;


Para probar esta funcion vamos a usar el ejemplo anterior y calcular su digitos de control.
Código [-]
IDESP12345678Z3<<<<<<<<<<<<<<<
7410150M0903226ESP<<<<<<<<<<<4

Control('12345678Z') = 3 
Control('741015') = 0
Control('090322') = 6
Control('12345678Z374101500903226') = 4

Prueba Superada !!

*Para calcular el ultimo digito de control se utilizan los 3 campos anteriores
y su correspondiente dc


Ahora bien, resulta que los pasaportes que exige Estados Unidos para entrar a su pais y que muchos paises estan adoptando, entre ellos España, incluyen tambien unos caracteres destinados a ser leidos de forma automatica. Resulta que los digitos de control de estos documentos tambien siguen el mismo algoritmo que he descrito antes.

Como no tengo pasaporte he buscado un ejemplo para comprobar si es verdad que el algoritmo funciona, y que mejor ejemplo que el que proporciona el propio departamento de "Homeland Security" (http://www.dhs.gov/) en su propia pagina.
Código [-]
P<USATRAVELER<<HAPPY<<<<<<<<<<<<<<<<<<<<<<<<
1500000035USA5609165M0811150<<<<<<<<<<<<<<08

Linea1: P Pais Apellido Nombre
Linea2: Numero dc Pais Nacimiento dc Sexo Caducidad (*) dc

dc = Digito de control
*Aqui puede aparecer otro numero para uso interno del pais 
  que emite el pasaporte.

Calculemos los digitos de control:
Control('150000003') = 5
Control('560916') = 5
Control('081115') = 0
Control('150000003556091650811150') = 8 

Prueba superada !!


Por cierto lo de "HAPPY TRAVELER" no es coña, es el nombre que le ponen a un hipotetico turista :) . Bueno aqui os dejo la informacion y el algoritmo por si a alguien le sirve de algo.

Para saber mas:
http://jpf.sdf1.org/dni/
http://www.highprogrammer.com/alan/numbers/mrp.html
http://www.dhs.gov/
Versión imprimible

Comentarios de otros usuarios

Tus comentarios son importantes
[CODE] [HTML] [DELPHI] [SQL] [B] [U] [I]
 


1996-2012 Club Delphi - El punto de encuentro de los programadores de habla hispana