terça-feira, 22 de setembro de 2009

Validação de título de eleitor

Function TNTWBasEdt.ValidTIT(Valor: String): Boolean;
{função para validação do titulo de eleitor}
var i, j, iPriDig, iSegDig: Integer;
begin
Result:=false;//se o codigo passado for vazio ou nulo cai fora
if Length(Valor) = 0 then
Exit;

Valor:=AlinhaTX(Valor, 'd', 13, '0');//alinha e preenche com zeros as 13 posicoes necessarias
j:=StrToInt(Copy(Valor, 9, 2)); //essa questao das 2 posicoes falta confirmar com o TSE

//primeiro numero do digito
iPriDig:=0;
for i:=1 to 9 do//executa as somatorias e multiplicacoes
iPriDig:=iPriDig + StrToInt(Valor[i]) * (10 - (i - 1));
iPriDig:=iPriDig mod 11;//resolve o modulo 11
if iPriDig > 1 then //calcula o digito especifico
iPriDig:=11 - iPriDig
else
begin
if j <= 2 then
iPriDig:=1 - iPriDig
else
iPriDig:=0;
end;
//segundo numero do digito
iSegDig:=iPriDig * 2;//dobra o primeiro digito
for i:=10 to 11 do //e executa as somatorias
iSegDig:=iSegDig + StrToInt(Valor[i]) * (13 - (i - 1));
iSegDig:=iSegDig mod 11;
if iSegDig > 1 then
iSegDig:=11 - iSegDig
else
begin
if j <= 2 then
iSegDig:=1 - iSegDig
else
iSegDig:=0;
end;
//valida se o digito é verdadeiro
Result:=(IntToStr(iPriDig) + IntToStr(iSegDig)) = Copy(Valor, 12, 2);
end;

Nenhum comentário:

Postar um comentário