Clipper On Line • Ver Tópico - Validar titulo de eleitor

Validar titulo de eleitor

Discussão sobre a biblioteca Fivewin - O Clipper para Windows.

Moderador: Moderadores

 

Validar titulo de eleitor

Mensagempor Kapiaba » 20 Jan 2015 09:02

Bom dia,

Alguém tem alguma função para validar o número do título de eleitor ?

Como se faz no CPF?

Obg. Abs.
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1415
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 276 vezes
Mens.Curtidas: 85 vezes

Validar titulo de eleitor

Mensagempor Kapiaba » 20 Jan 2015 09:05

Tipo este exemplo em Java:

//Validar Título de Eleitor
public static String ValidarTitulo(String strTitulo)
{
    int dig1; int dig2; int dig3; int dig4; int dig5; int dig6;
    int dig7; int dig8; int dig9; int dig10; int dig11;
    int dig12; int dv1; int dv2; int qDig;

    if (strTitulo.length() == 0) //Validação do preenchimento
    {
        return "Número não informado!"; //Caso não seja informado o Título
    }
    else
    {
        if (strTitulo.length() < 12)         
        {             
            //Completar 12 dígitos             
            strTitulo = "000000000000" + strTitulo;             
            strTitulo = strTitulo.substring(strTitulo.length() - 12);         
        }
        else if (strTitulo.length() > 12)
        {
            return "Número inválido!"; //Caso tenha mais que 12 dígitos
        }
    }

    qDig = strTitulo.length(); //Total de caracteres

    //Gravar posição dos caracteres
    dig1 = Integer.parseInt(Mid(strTitulo, qDig - 11, 1));
    dig2 = Integer.parseInt(Mid(strTitulo, qDig - 10, 1));
    dig3 = Integer.parseInt(Mid(strTitulo, qDig - 9, 1));
    dig4 = Integer.parseInt(Mid(strTitulo, qDig - 8, 1));
    dig5 = Integer.parseInt(Mid(strTitulo, qDig - 7, 1));
    dig6 = Integer.parseInt(Mid(strTitulo, qDig - 6, 1));
    dig7 = Integer.parseInt(Mid(strTitulo, qDig - 5, 1));
    dig8 = Integer.parseInt(Mid(strTitulo, qDig - 4, 1));
    dig9 = Integer.parseInt(Mid(strTitulo, qDig - 3, 1));
    dig10 = Integer.parseInt(Mid(strTitulo, qDig - 2, 1));
    dig11 = Integer.parseInt(Mid(strTitulo, qDig - 1, 1));
    dig12 = Integer.parseInt(Mid(strTitulo, qDig, 1));

    //Cálculo para o primeiro dígito validador
    dv1 = (dig1 * 2) + (dig2 * 3) + (dig3 * 4) + (dig4 * 5) + (dig5 * 6) +
            (dig6 * 7) + (dig7 * 8) + (dig8 * 9);
    dv1 = dv1 % 11;

    if (dv1 == 10)
    {
        dv1 = 0; //Se o resto for igual a 10, dv1 igual a zero
    }

    //Cálculo para o segundo dígito validador
    dv2 = (dig9 * 7) + (dig10 * 8) + (dv1 * 9);
    dv2 = dv2 % 11;

    if (dv2 == 10)
    {
        dv2 = 0; //Se o resto for igual a 10, dv1 igual a zero
    }

    //Validação dos dígitos validadores, após o cálculo realizado
    if (dig11 == dv1 && dig12 == dv2)
    {
        return "Título Válido!";
    }
    else
    {
        return "Título Inválido!";
    }

}


Obg. abs.
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1415
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 276 vezes
Mens.Curtidas: 85 vezes

Validar titulo de eleitor

Mensagempor Kapiaba » 20 Jan 2015 15:31

Solução:

/**
* Função para validar Título Eleitoral
*
*/
Function TestaTitulo(pTitulo)
Local digito1 := 0
Local digito2 := 0
Local decr1 := 9
Local i := 0
Local j := 0
Local cTitulo := StrZero(Val(pTitulo),12)

If !Empty(pTitulo) .AND. pTitulo != '000000000000'

For i:=1 To 8
   digito1 := (digito1 + Val(SubStr(cTitulo,i,1)) * decr1)
   decr1:= (decr1 - 1)
Next

digito1 := digito1% 11

If digito1 == 0 .or. digito1 == 1
   If Val(substr(cTitulo,9,1))== 0 .and. (Val(SubStr(cTitulo,10,1)) == 1 .or. Val(SubStr(cTitulo,10,1)) == 2)
    If digito1 = 0
      digito1 := 1
    Else
     digito1 := 0
    Endif
   Else
    digito1 := 0
   EndIf
else
   digito1 := (11 - digito1)
EndIf

If (digito1 = Val(SubStr(cTitulo,11,1)))
   j := 1
Else
   j := 0
EndIf
If (j = 1)
   digito2 := (Val(SubStr(cTitulo,9,1))*4) + (Val(SubStr(cTitulo,10,1))*3) + (digito1*2)
   digito2 := digito2 % 11
   If ((digito2 = 0 ) .or. (digito2 = 1))
    If (Val(SubStr(cTitulo,9,1))= 0 .and. (Val(SubStr(cTitulo,10,1)) = 1 .or. Val(SubStr(cTitulo,10,1)) = 2))
      If digito2 = 0
       digito2 := 1
      Else
     digito2 := 0
      EndIf
    Else
     digito2 := 0
    EndIf
   Else
    digito2 := (11 - digito2)
   Endif

  If (digito2 <> Val(substr(cTitulo,12,1)))
    j := 0
   Else
    j := 1
   EndIf
Endif
EndIf

If (j = 1)
If Empty(pTitulo) .or. pTitulo == '000000000000'
  Return .F.
Else
  Return .T.
Endif
Else
Return .F.
EndIf

Return .T.

Kapiaba
Colaborador

Colaborador
 
Mensagens: 1415
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 276 vezes
Mens.Curtidas: 85 vezes

Validar titulo de eleitor

Mensagempor alxsts » 29 Out 2018 19:51

Olá!

Tem algumas informações adicionais em: Título eleitoral / Cálculo do dígito verificador
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2132
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 13 vezes
Mens.Curtidas: 136 vezes




Retornar para FiveWin

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 2 visitantes


Faça uma doação para o forum
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro