Fórum Cálculo dígito verificador módulo 10 #264515
07/01/2005
0
Obrigado.
Andremuller
Curtir tópico
+ 0Posts
07/01/2005
Vprates
Gostei + 0
07/01/2005
Andremuller
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
Gostei + 0
07/01/2005
Vprates
[url]http://www.firebase.com.br/cgi-bin/firebase.cgi/artigo?ID=917[/url]
Espero que te ajude
Gostei + 0
07/01/2005
Andremuller
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;Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)