Tema: Validar Nif
Ver Mensaje Individual
  #10  
Antiguo 09-05-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
La longitud fue mas una suposicion que una certeza, no había visto nunca ningun documento menor de 10.000.000, pero siempre se aprenden cosas nuevas. El caso es que probando con el programa PADRE, no me deja introducir un nif de menos de 9 letras ni de mas, no se si los de hacienda saben algo que yo ignoro pero sus razones tendran.

De todas formas no cuesta nada poner como requisito que se deben rellenar con ceros a la izquierda los numeros que no alcancen las nueve cifras. En algunos impresos oficiales ya te lo piden.

O simplemente podemos comprobar que la longitud esta entre 8 y 10
Código Delphi [-]
function LetraNIF(Numero: Integer): string;
begin
  Result:= copy('TRWAGMYFPDXBNJZSQVHLCKET',1 + numero mod 23,1);
end;

function EsNIFCorrecto(NIF: String): Boolean;
var
  Numero: Integer;
begin
  Result:= FALSE;
  // Eliminamos espacios y separadores
  while (pos(' ',NIF)>0) do
    delete(NIF,pos(' ',NIF),1);
  while (pos('-',NIF)>0) do
    delete(NIF,pos('-',NIF),1);
  while (pos('/',NIF)>0) do
    delete(NIF,pos('/',NIF),1);
  // La longitud entre 8 y 10 deberia de valer
  if Length(NIF) in [8..10] then
    if TryStrToInt(Copy(NIF,1,Length(NIF)-1),Numero) then
      Result:= Uppercase(Copy(NIF,Length(NIF),1)) = LetraNIF(Numero);
end;
Responder Con Cita