Eu jaz fiz pelo modulo 11 base 9 assim. E deu valores diferentes.
function Modulo11(Valor: String; Base: Integer = 9; Resto : boolean = false) : string; { Rotina muito usada para calcular dígitos verificadores Pega-se cada um dos dígitos contidos no parâmetro VALOR, da direita para a esquerda e multiplica-se pela seqüência de pesos 2, 3, 4 ... até BASE. Por exemplo: se a base for 9, os pesos serão 2,3,4,5,6,7,8,9,2,3,4,5... Se a base for 7, os pesos serão 2,3,4,5,6,7,2,3,4... Soma-se cada um dos subprodutos. Divide-se a soma por 11. Faz-se a operação 11-Resto da divisão e devolve-se o resultado dessa operação como resultado da função Modulo11. Obs.: Caso o resultado seja maior que 9, deverá ser substituído por 0 (ZERO). } var Soma, Contador, Digito, iResto : integer; Peso: String; begin Soma := 0; Peso := '4329876543298765432987654329876543298765432'; for Contador := 1 to length(valor) do begin Soma := Soma + (StrToInt(Valor[Contador]) * StrToInt(Peso[contador])); end; // iResto := (Soma mod 11); Digito := 11 - (Soma mod 11); if Digito > 9 then Digito := 0; Result := IntToStr(Digito); end; De: Felipe Yahoo [mailto:nunesfel...@yahoo.com.br] Enviada em: terça-feira, 30 de março de 2010 17:49 Assunto: Digito Verificador Boa tarde senhores, preciso de ajuda para descobrir qual calculo foi feito para encontrar esses digitos informados em baixo: Já utilizei o Modulo10 e Modulo11. Codigo do Produto Digito Verificador 1751 5 2002 8 3013 9 3050 3 3051 1 3057 1 4032 1 4070 3 6004 6 Obrigado [As partes desta mensagem que não continham texto foram removidas]