Marcos-rj Postado Maio 9, 2007 Denunciar Share Postado Maio 9, 2007 alguém saberia me dizer qual o problema deste IF.quando clico no botão o if é ignorado totalmente.procedure TFFiltroApre.BitBtn1Click(Sender: TObject); begin If CNPJ.Text = '__.___.___/____-__' Then begin MessageBeep(64); Showmessage ('FAVOR INFORMAR O CNPJ.'); cnpj.SetFocus end else begin MessageBeep(64); Showmessage (TUDO OK'); end end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Visitante Postado Maio 11, 2007 Denunciar Share Postado Maio 11, 2007 Marcos, porque você não faz um teste se o CNJP é válido? veja o código abaixo:Função:Function ValidaCNPJ(CNPJstr : string) : boolean; var dig1,dig2,i,cal : integer; digitos : array [1..14] of integer; controle : boolean; begin controle := false; if not((pos(' ',CNPJstr)<>0) or (CNPJstr = '')) then begin for i := 1 to length(CNPJstr) - 4 do // Copia string no vetor begin if i < 3 then digitos[i] := StrToInt(CNPJstr[i]) else if (i >= 3) and (i < 6) then digitos[i] := StrToInt(CNPJstr[i+1]) else if (i >= 6) and (i < 9) then digitos[i] := StrToInt(CNPJstr[i+2]) else if (i >= 9) and (i < 13) then digitos[i] := StrToInt(CNPJstr[i+3]) else if (i >= 13) then digitos[i] := StrToInt(CNPJstr[i+4]); end; // Testa c é --> 00.000.000.000/0000-00 for i := 1 to 13 do if not((digitos[i] = 0) and (digitos[i+1] = 0)) then begin controle := true; break; end; if controle then // primeiro digito begin cal := (5 * digitos[1])+(4 * digitos[2])+(3 * digitos[3])+(2 * digitos[4])+ (9 * digitos[5])+(8 * digitos[6])+(7 * digitos[7])+(6 * digitos[8])+ (5 * digitos[9])+(4 * digitos[10])+(3 * digitos[11])+(2 * digitos[12]); if ((cal mod 11) = 1)or((cal mod 11) = 0) then dig1 := 0 else dig1 := 11-(cal mod 11); if dig1 = digitos[13] then // Compara o 1º se ok vai calcular o 2º digito begin cal :=(6 * digitos[1])+(5 * digitos[2])+(4 * digitos[3])+(3 * digitos[4])+ (2 * digitos[5])+(9 * digitos[6])+(8 * digitos[7])+(7 * digitos[8])+(6 * digitos[9])+ (5 * digitos[10])+(4 * digitos[11])+(3 * digitos[12])+(2 * digitos[13]); if ((cal mod 11) = 1)or((cal mod 11) = 0) then dig2 := 0 else dig2 := 11-(cal mod 11); // Testa o 2º digito, se ok cnpj valido if dig2 = digitos[14] then ValidaCNPJ := true else ValidaCNPJ := false; end else ValidaCNPJ := false; end else ValidaCNPJ := false; end else ValidaCNPJ := false; end; Chamar a função: procedure TForm1.Button1Click(Sender: TObject); begin if ValidaCNPJ(edit1.text) = false then ShowMessage('CNPJ inválido!'); end; end. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Marcos-rj
alguém saberia me dizer qual o problema deste IF.
quando clico no botão o if é ignorado totalmente.
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.