Erro na validação e na mascara de CPF e CNPJ

Delphi

SQLite

16/12/2020

Olá, estou sendo assombrado pelo fantasma dos erros delhpianos, o erro em questão é este: "invalid input value. Use escape key to abandon changes"
Ele ocorre quando ao digitar o CPF ou CNPJ algum numero fica faltando.
Utilizo uma mascara no seguinte estilo:

ECPF.MaxLength := 14;  // Quantidade maxima de caracteres contando com os . e -
TStringField(Query.FindField('CPFCNPJ')).EditMask :=  '000\.000\.000\-00;0; ';


O mesmo processo para o CNPJ.
Tentei barrar com o seguinte codigo.

if ComboTipo.ItemIndex = 0 then
          begin
             if Length(ECPF.Text) < 14 then
              raise Exception.Create('É necessário informas todos os números do CPF!');
          end


Porém quase sem sucesso, ao implementar isto ao KeyDown do Edit:

if Key = #13 then
begin
   if ComboTipo.ItemIndex = 0 then
          begin
             if Length(ECPF.Text) < 14 then
              raise Exception.Create('É necessário informas todos os números do CPF!');
          end;
end;


Já consegui exibir minha mensagem RAISE, porem acompanhada com a mensagem do erro: "invalid input value. Use escape key to abandon changes"

Alguem consegue me auxiliar?
Preciso tratar esse erro, mas ele passa batido pelo onExit do Edit, como faço para tratar esse erro e viver feliz para sempre?

Utilizo banco SQLite e Delphi 10.2 Tokyo

Deste já obrigado pela atenção
Ramboli

Ramboli

Curtidas 0

Melhor post

Ramboli

Ramboli

16/12/2020

Verifique se isso ajuda:

http://www.activedelphi.com.br/forum/viewtopic.php?t=64806&sid=afc9488f3a44cb2cee069723d493de35


Ajudou bastante, muito obrigado <3 <3

GOSTEI 1

Mais Respostas

Nomad

Nomad

16/12/2020

Verifique se isso ajuda:

http://www.activedelphi.com.br/forum/viewtopic.php?t=64806&sid=afc9488f3a44cb2cee069723d493de35
GOSTEI 0
Ramboli

Ramboli

16/12/2020

Se não for pedir demais, ta ocorrendo algo estranho agora. Consegui com que emita apenas a mensagem Raise, porem, sempre cai na condição:

begin
             if Length(ECPF.Text) < 14 then
              raise Exception.Create('É necessário informas todos os números do CPF!');
          end;


Por algum motivo, sempre esta caindo, 14 é o numero de caracteres do CPF juntamente com os caracteres da mascara, se eu colocar 11, que são apenas os caracteres do CPF, ele pula o evento, mesmo se eu preencher totalmente os espaços ou se deixar totalmente nulo, ele se comporta igual, alguma dica?

Obrigado e desculpe novamente
GOSTEI 0
Ramboli

Ramboli

16/12/2020

Se não for pedir demais, ta ocorrendo algo estranho agora. Consegui com que emita apenas a mensagem Raise, porem, sempre cai na condição:

begin
             if Length(ECPF.Text) < 14 then
              raise Exception.Create('É necessário informas todos os números do CPF!');
          end;


Por algum motivo, sempre esta caindo, 14 é o numero de caracteres do CPF juntamente com os caracteres da mascara, se eu colocar 11, que são apenas os caracteres do CPF, ele pula o evento, mesmo se eu preencher totalmente os espaços ou se deixar totalmente nulo, ele se comporta igual, alguma dica?

Obrigado e desculpe novamente


Encontrei o erro, porem não sei como consertar, pois no CPF ele esta comendo 2 caracteres, sempre 2, apos o -, já o CNPJ, ele esta comendo caracteres aleatorios, as vezes come 1, as vezes 2, as vezes nem come
GOSTEI 0
POSTAR