GARANTIR DESCONTO

Fórum Cálculo dígito verificador módulo 10 #264515

07/01/2005

0

Gostaria de saber se alguém poderia postar a fórmula de cálculo de dígito verificador módulo 10.

Obrigado.


Andremuller

Andremuller

Responder

Posts

07/01/2005

Vprates

Desculpe a ignorancia mas o q é exatamente esse modulo 10???


Responder

Gostei + 0

07/01/2005

Andremuller

É um tipo de cálculo.

Ex.: Bloquetos utilizam módulo 11 para o dígito verificador
Inscrições Estaduais, nos estados que conheço, utilizam módulo 10 para gerar os números depois do ´-´

Preciso de uma função que a partir do código informado, gere o dígito verificador


Responder

Gostei + 0

07/01/2005

Vprates

Da uma olhada nesse link talvez de pra vc aproveitar alguma coisa:
[url]http://www.firebase.com.br/cgi-bin/firebase.cgi/artigo?ID=917[/url]

Espero que te ajude


Responder

Gostei + 0

07/01/2005

Andremuller

Achei.

Mas obrigado de qualquer forma.

function Mod10(Num : String) : Integer;
Var
   Tamanho, Soma : Integer;
   Resultado : Array [1..100] of Integer;
   Fator, Resto, I : Byte;
begin
     {Função que retorna dígito baseado no cálculo do MÓDULO 10}

     Tamanho := Length(Num);            // Tamanho da cadeia de números
     Fator := 2;                        // Fator para multiplicação
     For I := Tamanho Downto 1 Do       // Inicia a multiplicação da DIREITA PARA A ESQUERDA
     begin
          Resultado[I] := StrToInt(Copy(Num,I,1)) * Fator;
          If Fator = 2 Then             // Alterna o fator entre 2 e 1
             Fator := 1
          Else
              Fator := 2;
     end;
     Soma := 0;
     For I := 1 To Tamanho Do           // Somam-se todos os resultados da multiplicação
         If Resultado[I] > 9 Then       // Se o resultado contiver 2 dígitos, somaremos separadamente os dois
            Soma := Soma + StrToInt(Copy(IntToStr(Resultado[I]),1,1)) + StrToInt(Copy(IntToStr(Resultado[I]),2,1))
         Else
             Soma := Soma + Resultado[I];
     Resto := Soma mod 10;              // Obtem-se o resto da divisão entre a SOMA e 10
     If Resto = 0 Then                  // Se RESTO for zero, o dígito é zero
        Mod10 := 0
     Else                               // Se existir RESTO, o dígito será (10 - RESTO)
         Mod10 := 10 - Resto;
end;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar