Ajuda - Busca - Membros - Calendário
Versão Completa: ValidaÇÃo De Cmc7
Fórum Script Brasil > Programação & Desenvolvimento > Delphi, Kylix
Bruno Frank
Alguem tem uma função de validação de linha magnética de cheque... obrigado
Progr'amador
Olá Bruno,
De uma olhada nesse código:

CODE
function Valida_CMC7(Entrada:String) : Boolean;
var
 campo1, campo2, campo3 : String;
begin
 Entrada := SoNumero(Entrada);
 campo1 := Copy(entrada,1,7);
 campo2 := Copy(entrada,9,10);
 campo3 := Copy(entrada,20,10);
 Result := True;
 if Modulo10(campo1) <> Copy(Entrada,19,1) then
    Result := False
 Else
 if Modulo10(campo2) <> Copy(Entrada,8,1) then
    Result := False
 Else
 if Modulo10(campo3) <> Copy(Entrada,30,1) then
    Result := False;
end;



Abs. Progr'amador.
--Gerson --
Podem baixar o arquivo em excel que calcula os dígitos verificadores


http://www.4shared.com/file/49976554/8cbde...rified=2c7a4f5a


1) Digitos de controle da banda de CMC-7
2) Diagrama de localização dos caracteres magnéticos.

1) Digitos de controle da banda de CMC-7.
=========================================

CMC-7 (APENAS CARACTERES NUMÉRICOS):

07102022 4520000345 320210517437
ABCDEFG@ HIJKLMNOPQ #RSTUVWXYZ&$

# = DV1
@ = DV2
$ = DV3

ABCDEFGDV2 HIJKLMNOPQ DV1RSTUVWXYZ&DV3

Calculo do DV1:

MULTIPLIQUE A * 2 SE O RESULTADO FOR MAIOR QUE 9 SOME OS DIGITOS
MULTIPLIQUE B * 1
MULTIPLIQUE C * 2 SE O RESULTADO FOR MAIOR QUE 9 SOME OS DIGITOS
MULTIPLIQUE D * 1
MULTIPLIQUE E * 2 SE O RESULTADO FOR MAIOR QUE 9 SOME OS DIGITOS
MULTIPLIQUE F * 1
MULTIPLIQUE G * 2 SE O RESULTADO FOR MAIOR QUE 9 SOME OS DIGITOS
SOME TODOS OS RESULTADOS

RETIRE O RESTO DA DIVISÂO POR 10
SE O RESULTADO FOR MAIOR QUE 9 O DV1(#) DEVE SER IGUAL A 0
CASO CONTRARIO O DV1(#) DEVE SER O RESULTADO DA SUBTRAÇÃO DE 10-RESTO
Calculo do DV2:

MULTIPLIQUE H * 1
MULTIPLIQUE I * 2 SE O RESULTADO FOR MAIOR QUE 9 SOME OS DIGITOS
MULTIPLIQUE J * 1
MULTIPLIQUE K * 2 SE O RESULTADO FOR MAIOR QUE 9 SOME OS DIGITOS
MULTIPLIQUE L * 1
MULTIPLIQUE M * 2 SE O RESULTADO FOR MAIOR QUE 9 SOME OS DIGITOS
MULTIPLIQUE N * 1
MULTIPLIQUE O * 2 SE O RESULTADO FOR MAIOR QUE 9 SOME OS DIGITOS
MULTIPLIQUE P * 1
MULTIPLIQUE Q * 2 SE O RESULTADO FOR MAIOR QUE 9 SOME OS DIGITOS
SOME TODOS OS RESULTADOS


RETIRE O RESTO DA DIVISÂO POR 10
SE O RESULTADO FOR MAIOR QUE 9 O DV1(#) DEVE SER IGUAL A 0
CASO CONTRARIO O DV2(@) DEVE SER O RESULTADO DA SUBTRAÇÃO DE 10-RESTO
Calculo do DV3:

MULTIPLIQUE R * 1
MULTIPLIQUE S * 2 SE O RESULTADO FOR MAIOR QUE 9 SOME OS DIGITOS
MULTIPLIQUE T * 1
MULTIPLIQUE U * 2 SE O RESULTADO FOR MAIOR QUE 9 SOME OS DIGITOS
MULTIPLIQUE V * 1
MULTIPLIQUE W * 2 SE O RESULTADO FOR MAIOR QUE 9 SOME OS DIGITOS
MULTIPLIQUE X * 1
MULTIPLIQUE Y * 2 SE O RESULTADO FOR MAIOR QUE 9 SOME OS DIGITOS
MULTIPLIQUE Z * 1
MULTIPLIQUE & * 2 SE O RESULTADO FOR MAIOR QUE 9 SOME OS DIGITOS
SOME TODOS OS RESULTADOS


RETIRE O RESTO DA DIVISÂO POR 10
SE O RESULTADO FOR MAIOR QUE 9 O DV1(#) DEVE SER IGUAL A 0
CASO CONTRARIO O DV3($) DEVE SER O RESULTADO DA SUBTRAÇÃO DE 10-RESTO
Banda Magnética ou CMC7: São os números impressos abaixo do cheque capturados pelo leitor magnetico.

Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.