Jhessica 0 Denunciar post Postado Dezembro 13, 2007 Olá Pessoal! Estou fazendo um programa que necessita de uma rotina para verificar a validade do cpf. Fiz um código que deveria estar funcionando corretamente, mas não sei o que fazer com os valores. tá funcionando assim: * Um edit recebe o número do cpf (string) sem pontos nem traços; * Criei uma variável do tipo array para receber esse valor convertido para inteiro; * O problema é que, quando esse valor é convertido para inteiro dentro do array, ele fica com o seguinte valor: 0,0,0,0,0,0,0,0,0,0,0. * No final, mesmo que o CPF esteja correto, o ShowMessage mostra sempre "Cpf Inválido" Gostaria de saber como posso fazer esse código para que ele funcione direito. Obrigada a quem puder ajudar. cpf[i]:=strtoint(edit1.Text); //cálculo do primeiro dígito verificador soma1:=(cpf[1]*10)+(cpf[2]*9)+(cpf[3]*8)+ (cpf[4]*7)+ (cpf[5]*6)+(cpf[6]*5)+ (cpf[7]*4)+ (cpf[8]*3)+(cpf[9]*2); result1:=(soma1 div 11)*11; dv1:=soma1-result1; if (dv1=0) or (dv1=1) then begin digver01:=1; end else digver01:=11-dv1; edit2.Text:=inttostr(digver01); //cálculo do segundo dígito verificador soma2:=(cpf[1]*11)+(cpf[2]*10)+(cpf[3]*9)+ (cpf[4]*8)+ (cpf[5]*7)+(cpf[6]*6)+ (cpf[7]*5)+ (cpf[8]*4)+(cpf[9]*3)+ (digver01*2); result2:=(soma2 div 11)*11; dv2:=soma2-result2; if (dv2=0) or (dv1=2) then digver02:=1 else digver02:=11-dv2; //teste de igualdade entre os valores: if (digver01=cpf[10]) and (digver02=cpf[11]) then ShowMessage ('Cpf válido!!') else ShowMessage ('Cpf Inválido'); Compartilhar este post Link para o post Compartilhar em outros sites
Rodrigo Miss 1 Denunciar post Postado Dezembro 13, 2007 De uma olhadinha no Laboratório de Script, se não me engano tem um exemplo do Marcio Theis lah ... Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Dezembro 13, 2007 Somente completando o que o amigo Rodrigo disse... Segue o link do tópico -> http://forum.imasters.com.br/index.php?showtopic=195531 Compartilhar este post Link para o post Compartilhar em outros sites
Jhessica 0 Denunciar post Postado Dezembro 13, 2007 Obrigada pela dica, foi muito útil. Mas agora estou precisando de ajuda para entender o código, e gostaria de saber como funciona essa parte dele, principalmente no que se trata a AnsiIndexStr: case AnsiIndexStr(cpf,['00000000000','11111111111','22222222222','33333333333','44444444444', '55555555555','66666666666','77777777777','88888888888','99999999999']) of 0..9: ret:=False; end; end else begin //Se não informado deixa passar if cpf = '' then ret:=True; end; end; Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Dezembro 14, 2007 O comando AnsiIndexStr serve para fazer case usando strings, onde que ele vai ver se tem alguma das strings dentro na variável cpf... Compartilhar este post Link para o post Compartilhar em outros sites