Function ValidaRenavam

Delphi

25/02/2014

Olá, há um tempo eu encontrei essa function de Validar renavam na internet:

function ValidaRenavam(Num: String) : Boolean;
var
  n1,n2,n3,n4,n5,n6,n7,n8,n9, i, d1, d2: Integer;
  digitado, calculado: String;
  Retorno: Boolean;
begin
  try
    if ( Length( Num ) <> 9 ) then Result := False
    else
    begin
      Retorno := True;
      for i := 0 to 8 do
        if ( Num = Replicate( IntToStr(i), 11 ) ) then Retorno := False;
        
        if ( Retorno ) then
        begin
          n1:=StrToInt(num[1]);
          n2:=StrToInt(num[2]);
          n3:=StrToInt(num[3]);
          n4:=StrToInt(num[4]);
          n5:=StrToInt(num[5]);
          n6:=StrToInt(num[6]);
          n7:=StrToInt(num[7]);
          n8:=StrToInt(num[8]);
          n9:=StrToInt(num[9]);

          d1:=n8*2+n7*3+n6*4+n5*5+n4*6+n3*7+n2*8+n1*9;
          d1:=11-(d1 mod 11);

          calculado:=inttostr(d1);
          digitado:=num[9];

          if calculado=digitado then Result := True
            else
              Result := False;
        end
        else
          Result := False;
      end;
      except
        Result := False;
   end;
end;


Com a Replicate, meio que um complemento:

function Replicate( Caracter:String; Quant:Integer ): String;
var
  I : Integer;
begin Result := '';
  for I := 1 to Quant do Result := Result + Caracter;
end;


Até agora estava dando certo, mas hoje o cliente tentou validar um renavam e deu que o mesmo era inválido. Porém, pesquisei esse renavam no site do denatran e foi encontrado... o que significa que a função não é 100% efetiva. Alguém sabe como tratar isso?
O renavam que o cliente tentou cadastrar é: 715602560.
Obrigado.
Mr. White

Mr. White

Curtidas 0

Respostas

Mr. White

Mr. White

25/02/2014

Alguém?
GOSTEI 0
Ricardo

Ricardo

25/02/2014

Amigo descupe perguntar ao invés de ajudar, mas passei por aqui e resolvi dar uma olhada no seu post já que eu desenvolvo sistemas de trânsito.
Rapidamente em minha memória... essa função não esta incompleta...?
GOSTEI 0
Mr. White

Mr. White

25/02/2014

A função não é minha, peeguei ela assim já.. não sei responder se está incompleta ou não, mas por dar esse erro, acredito que esteja mesmo...
GOSTEI 0
POSTAR