Ir para conteúdo
  • Cadastre-se

dev botao

Validação de Chassis (VIN)


  • Este tópico foi criado há 1766 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Precisei criar uma função para validar o número de Chassis de veículos (VIN). Segue o código como contribuição. Talvez possa ser incluído no ACBrValidador.

function ValidaChassis(Chassis:string): boolean;
var i,Soma,Numero,Resto: integer;  Digito:string;
  function NumeroDaLetra(Letra:string):integer;
  begin
    if Letra = 'A' then result := 1 else
    if Letra = 'B' then result := 2 else
    if Letra = 'C' then result := 3 else
    if Letra = 'D' then result := 4 else
    if Letra = 'E' then result := 5 else
    if Letra = 'F' then result := 6 else
    if Letra = 'G' then result := 7 else
    if Letra = 'H' then result := 8 else
    if Letra = 'I' then result := 9 else
    if Letra = 'J' then result := 1 else
    if Letra = 'K' then result := 2 else
    if Letra = 'L' then result := 3 else
    if Letra = 'M' then result := 4 else
    if Letra = 'N' then result := 5 else
    if Letra = 'O' then result := 6 else
    if Letra = 'P' then result := 7 else
    if Letra = 'Q' then result := 8 else
    if Letra = 'R' then result := 9 else
    if Letra = 'S' then result := 2 else
    if Letra = 'T' then result := 3 else
    if Letra = 'U' then result := 4 else
    if Letra = 'V' then result := 5 else
    if Letra = 'W' then result := 6 else
    if Letra = 'X' then result := 7 else
    if Letra = 'Y' then result := 8 else
    result := 9;
  end;

begin
    if length(Chassis) <> 17 then
      raise Exception.Create('Número do Chassis deve tger 17 caracteres');
    Soma := 0;
    for i := 1 to 17 do
    begin
      if ((Chassis >= '0') and (Chassis <= '9')) then
        Numero := StrToInt((Chassis))
      else
        Numero := NumeroDaLetra(Chassis);
      case i of
       1,11:  Soma := Soma +  Numero * 8;
       2,12:  Soma := Soma +  Numero * 7;
       3,13:  Soma := Soma +  Numero * 6;
       4,14:  Soma := Soma +  Numero * 5;
       5,15:  Soma := Soma +  Numero * 4;
       6,16:  Soma := Soma +  Numero * 3;
       7,17:  Soma := Soma +  Numero * 2;
       8   :  Soma := Soma +  Numero * 10;
       9   :  Soma := Soma +  Numero * 0;
       10  :  Soma := Soma +  Numero * 9;
      end;
    end;
    Resto := Soma Mod 11;
    if Resto = 10 then
      Digito := 'X'
    else
      Digito := IntToStr(Resto);
    result := Digito = Chassis[9];
end;
 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Administradores

Bom dia,

Obrigada pelo interesse em contribuir com o projeto, sugiro realizar a alteração e anexar o pas modificado.

Att.

  • Curtir 2
Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1766 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...