Fórum MaskEdit-Como validar? #229845

04/05/2004

0

Olá caros amigos,
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

Rodolpho123

Responder

Posts

04/05/2004

Paulo_amorim

Olá

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;



Responder

Gostei + 0

04/05/2004

Rodolpho123

Grande Paulo,

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;



Responder

Gostei + 0

04/05/2004

Rodolpho123

Muito obrigado à todos! Descobri o que me faltava. Usei a cláusula:


TRY
  EXCEPT
    END



Responder

Gostei + 0

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

Aceitar