Fórum MaskEdit-Como validar? #229845
04/05/2004
0
Estou com uma dúvida: Como validar um MaskEdit para que, se o usuário não digitar uma quantidade de caracteres, ele não se torne válido? O método GetTextLen conta todos os caracteres (´.´,><´^~) disponíveis no text, só que o que eu quero validar é somente os digitos.
Rodolpho123
Curtir tópico
+ 0Posts
04/05/2004
Paulo_amorim
Tente isso:
var Count: Integer; begin Count := 0; for i := 0 to Mask1.GetTextLen do begin if Mask1(i) in [0..9] then Inc(Count); end; if Count < Valor then //Valor definido por voce ShowMessage(´ ta faltando´); end;
Gostei + 0
04/05/2004
Rodolpho123
Muito obrigado mesmo pela sua ajuda, mas ainda não é isso que busco. O codigo que vc mencionou é brilhante mas no MaskEdit que eu estou trabalhando, ele não pode haver falta de informação nenhuma, pois é um campo de CPF. Já fiz o cálculo dos dígitos verificadores, mas o problema é que, se a pessoa coloca a infromação ´furada´, ex: 123._52.788-8_, ele gera uma exceção devido o cálculo, porém dá o prosseguimento. Então, minha idéia é: Fazer o sistema entender que está faltando dígitos, caso fossem incompletos. Isto deve incluir: ´furos´ em qualquer lugar, uso de backspace para corrigir os dados, del para apagar determinado dado. Eis aqui meu código:
procedure TCadastro.cpfExit(Sender: TObject); var a,b,c,d,e,f,g,h,i,j,k: integer; d1,d2: integer; calculado,digitado: string; begin a:= StrToInt(cpf.Text[1]); b:= StrToInt(cpf.Text[2]); c:= StrToInt(cpf.Text[3]); d:= StrToInt(cpf.Text[5]); e:= StrToInt(cpf.Text[6]); f:= StrToInt(cpf.Text[7]); g:= StrToInt(cpf.Text[9]); h:= StrToInt(cpf.Text[10]); i:= StrToInt(cpf.Text[11]); j:= StrToInt(cpf.Text[13]); k:= StrToInt(cpf.Text[14]); d1:= i*2 + h*3 + g*4 + f*5 + e*6 + d*7 + c*8 + b*9 + a*10; d1:= 11-(d1 mod 11); if d1 >= 10 then d1:= 0; d2:= d1*2 + i*3 + h*4 + g*5 + f*6 + e*7 + d*8 + c*9 + b*10 + a*11; d2:= 11-(d2 mod 11); if d2 >= 10 then d2:= 0; calculado:= IntToStr(d1)+IntToStr(d2); digitado:= IntToStr(j) + IntToStr(k); if calculado <> digitado then begin Application.MessageBox(´Este CPF está inválido. Por favor, corrija-o´,´CPF INVALIDO´,+MB_OK+MB_ICONEXCLAMATION); cpf.SetFocus; end else BitBtn8.Enabled:= true; end;
Gostei + 0
04/05/2004
Rodolpho123
TRY EXCEPT END
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)