sábado, 17 de outubro de 2009

Funcao para calculo de digito verificador de cpf

Function DVCPF (CPF : string) : boolean; stdcall; export;

const
SEQUEICIA1 : array[1..9] of byte = (10,9,8,7,6,5,4,3,2);
SEQUEICIA2 : array[1..9] of byte = (11,10,9,8,7,6,5,4,3);
var
SOMA1,SOMA2,N,I,DV1,DV2 : integer;
DVSOMADO1,DVSOMADO2,digcpf : string;

begin
Result := False;
SOMA1:=0; SOMA2:=0;
for I:=1 to 9 do
begin
N:= StrToInt(CPF[I]);
SOMA1:=SOMA1 + N*SEQUEICIA1[I];
SOMA2:=SOMA2 + N*SEQUEICIA2[I];
end;
if (SOMA1 MOD 11) <= 1 then DV1:=0 else DV1:= 11 - (SOMA1 MOD 11);
SOMA2:=SOMA2+DV1*2;
if (SOMA2 MOD 11) <= 1 then DV2:=0 else DV2:= 11 - (SOMA2 MOD 11);
str(DV1,DVSOMADO1); str(DV2,DVSOMADO2);
digcpf := DVSOMADO1+DVSOMADO2;
if copy(CPF,10,2) = digcpf THEN
result := true;



end;

Nenhum comentário:

Postar um comentário