Validação Título Eleitoral

09/08/2004

0

Estou precisando de uma rotina para validação de título eleitoral. Alguém pode me fornecer?


Obrigado!!!


Welington

Welington

Responder

Posts

10/08/2004

Cafosys

Não testei nenhuma das opções mais ai vai dois exemplos


//exemplo 1

function ValidaTituloEleitor(sTitulo: string; MostraMsg: boolean = True): boolean;
const
Multiplicadores: array[1..11] of shortint = (10,9,8,7,6,5,4,3,2,4,3);
var
iCont, iAux, DigCalculado, DigInformado: shortint;
iDigito: integer;
begin
result := false;
if Length(stitulo) = 0 then
exit;

stitulo := StringOfChar(´0´,13-Length(stitulo))+stitulo; // 13 posições
iAux := StrToInt(Copy(stitulo,10,2)); // valor para auxiliar o cálculo do dígito

// dígito verificador
DigInformado := StrToInt(Copy(stitulo,12,2));;
DigCalculado := 0;

iDigito := 0;
for iCont := 1 to 11 do
begin
iDigito := iDigito + (StrToInt(stitulo[iCont]) * Multiplicadores[iCont]);
if iCont in [9,11] then
begin
iDigito := iDigito mod 11;
if iDigito > 1 then
iDigito := 11 - iDigito
else
begin
if iAux <= 2 then
iDigito := 1 - iDigito
else
iDigito := 0;
end;
if iCont = 9
then Digcalculado := iDigito * 10
else Digcalculado := Digcalculado + iDigito;
iDigito := iDigito * 2;
end;
end;

// verifica se o digito é verdadeiro
Result := DigCalculado = DigInformado;

if not Result and MostraMsg then
Application.MessageBox(´Número do título de eleitor inválido!´,´Atenção´,mb_TaskModal + mb_IconWarning);
end;
(´0´,13-Length(stitulo))+stitulo; // 13 posições
iAux := StrToInt(Copy(stitulo,10,2)); // valor para auxiliar o cálculo do dígito

// dígito verificador
DigInformado := StrToInt(Copy(stitulo,12,2));;
DigCalculado := 0;

iDigito := 0;
for iCont := 1 to 11 do
begin
iDigito := iDigito + (StrToInt(stitulo[iCont]) * Multiplicadores[iCont]);
if iCont in [9,11] then
begin
iDigito := iDigito mod 11;
if iDigito > 1 then
iDigito := 11 - iDigito
else
begin
if iAux <= 2 then
iDigito := 1 - iDigito
else
iDigito := 0;
end;
if iCont = 9
then Digcalculado := iDigito * 10
else Digcalculado := Digcalculado + iDigito;
iDigito := iDigito * 2;
end;
end;

// verifica se o digito é verdadeiro
Result := DigCalculado = DigInformado;

if not Result and MostraMsg then
Application.MessageBox(´Número do título de eleitor inválido!´,´Atenção´,mb_TaskModal + mb_IconWarning);
end;



//exemplo 2


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;


Responder

10/08/2004

Emerson Nascimento

Tente essa:

function ValidaTituloEleitor(sTitulo: string; MostraMsg: boolean = True): boolean;
const
    Multiplicadores: array[1..11] of shortint = (10,9,8,7,6,5,4,3,2,4,3);
var
    iCont, iAux, DigCalculado, DigInformado: shortint;
    iDigito: integer;
begin
    result := false;
    if Length(stitulo) = 0 then
        exit;

    stitulo := StringOfChar(´0´,13-Length(stitulo))+stitulo; // 13 posições
    iAux := StrToInt(Copy(stitulo,10,2)); // valor para auxiliar o cálculo do dígito

    // dígito verificador
    DigInformado := StrToInt(Copy(stitulo,12,2));;
    DigCalculado := 0;

    iDigito := 0;
    for iCont := 1 to 11 do
    begin
        iDigito := iDigito + (StrToInt(stitulo[iCont]) * Multiplicadores[iCont]);
        if iCont in [9,11] then
        begin
            iDigito := iDigito mod 11;
            if iDigito > 1 then
                iDigito := 11 - iDigito
            else
            begin
                if iAux <= 2 then
                    iDigito := 1 - iDigito
                else
                    iDigito := 0;
            end;
            if iCont = 9
            then Digcalculado := iDigito * 10
            else Digcalculado := Digcalculado + iDigito;
            iDigito := iDigito * 2;
        end;
    end;

    // verifica se o digito é verdadeiro
    Result := DigCalculado = DigInformado;

    if not Result and MostraMsg then
        Application.MessageBox(´Número do título de eleitor inválido!´,´Atenção´,mb_TaskModal + mb_IconWarning);
end;


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar