Array
(
)

Validação CNPF

Serpentedodeserto
   - 08 set 2008

Criei uma rotina para poder validar o CNPJ, mais nao e um campo obrigatorio. O meu grande problema foi quando deparei com o seguinte problema se o usuario digitar 2 caracter iria permitir salvar e me gerari um transtorno acabei fazendo o procedimento abaixo. Alguem poderia me ajudar a melhorar este codigo ate para poder ser postado. Pois no futuro pode ser a duvida de alguém:

#Código


[b][i]procedure Ttransp.DBEdit3Exit(Sender: TObject);
Var
n: array[1..14]of integer;
dgt1, dgt2: integer;
soma1, soma2:integer;
begin
inherited;
If (copy(dbEdit3.Text,1,1)<>´ ´) and (copy(dbEdit3.Text,2,1)<>´ ´) and (copy(dbEdit3.Text,4,1)<>´ ´) and (copy(dbEdit3.Text,5,1)<>´ ´) and (copy(dbEdit3.Text,6,1)<>´ ´) and (copy(dbEdit3.Text,8,1)<>´ ´) and (copy(dbEdit3.Text,9,1)<>´ ´) and (copy(dbEdit3.Text,10,1)<>´ ´) and (copy(dbEdit3.Text,12,1)<>´ ´) and (copy(dbEdit3.Text,13,1)<>´ ´) and (copy(dbEdit3.Text,14,1)<>´ ´) and (copy(dbEdit3.Text,15,1)<>´ ´) and (copy(dbEdit3.Text,17,1)<>´ ´) and (copy(dbEdit3.Text,18,1)<>´ ´) Then
Begin
{ // PREPARANDO OS NUMEROS PARA O CALCULO \\}
n[1]:= strToInt(copy(dbEdit3.Text,1,1));
n[2]:= strToInt(copy(dbEdit3.Text,2,1));
n[3]:= strToInt(copy(dbEdit3.Text,4,1));
n[4]:= strToInt(copy(dbEdit3.Text,5,1));
n[5]:= strToInt(copy(dbEdit3.Text,6,1));
n[6]:= strToInt(copy(dbEdit3.Text,8,1));
n[7]:= strToInt(copy(dbEdit3.Text,9,1));
n[8]:= strToInt(copy(dbEdit3.Text,10,1));
n[9]:= strToInt(copy(dbEdit3.Text,12,1));
n[10]:= strToInt(copy(dbEdit3.Text,13,1));
n[11]:= strToInt(copy(dbEdit3.Text,14,1));
n[12]:= strToInt(copy(dbEdit3.Text,15,1));
n[13]:= strToInt(copy(dbEdit3.Text,17,1));
n[14]:= strToInt(copy(dbEdit3.Text,18,1));

{ // CALCULO DO PRIMEIRO DÍGITO VERIFICADOR \\ }
Soma1:= (n[1]*5) + (n[2]*4) + (n[3]*3) + (n[4]*2) + (n[5]*9) + (n[6]*8) + (n[7]*7) + (n[8]*6) + (n[9]*5) + (n[10]*4) + (n[11]*3) + (n[12]*2);
dgt1:= 11 - (Soma1 mod 11);
If (dgt1 = 10) or (dgt1 = 11) Then dgt1:= 0;

{ // CALCULO DO SEGUNDO DÍGITO VERIFICADOR \\ }
Soma2:= (n[1]*6) + (n[2]*5) + (n[3]*4) + (n[4]*3) + (n[5]*2) + (n[6]*9) + (n[7]*8) + (n[8]*7) + (n[9]*6) + (n[10]*5) + (n[11]*4) + (n[12]*3) + (dgt1 * 2);
dgt2:= 11 - (Soma2 mod 11);
If (dgt2 = 10) or (dgt2 = 11) Then dgt2:= 0;

{ // CONFERINDO OS DIGITOS VERIFICADORES \\ }
If (dgt1 <> n[13]) or (dgt2 <> n[14]) Then
begin
mensagem:= ´Numero do CNPJ Inválido. ´;
Application.MessageBox(Pchar(mensagem), ´Erro no CNPJ...´, MB_OK + MB_IconError);
dbEdit3.SetFocus;
abort;
end;
End
Else
Begin
{ // VERIFICANDO SE FORAM DIGITADOS OS 14 DÍGITOS \\ }
mensagem:= ´CNPJ incompleto.´ + #13 +´Digite novamente´+ 13 + ´os 14 dígitos. ´;
if not (copy(dbEdit3.Text,1,1)=´ ´) then
begin
Application.MessageBox(Pchar(mensagem), ´Erro no CNPJ...´, MB_OK + MB_IconError);
dbEdit3.SetFocus;
dbEdit3.Clear;
Abort;
end
Else If not (copy(dbEdit3.Text,2,1)=´ ´) then
begin
Application.MessageBox(Pchar(mensagem), ´Erro no CNPJ...´, MB_OK + MB_IconError);
dbEdit3.SetFocus;
dbEdit3.Clear;
Abort;
end
Else If not (copy(dbEdit3.Text,4,1)=´ ´) then
begin
Application.MessageBox(Pchar(mensagem), ´Erro no CNPJ...´, MB_OK + MB_IconError);
dbEdit3.SetFocus;
dbEdit3.Clear;
Abort;
end
Else If not (copy(dbEdit3.Text,5,1)=´ ´) then
begin
Application.MessageBox(Pchar(mensagem), ´Erro no CNPJ...´, MB_OK + MB_IconError);
dbEdit3.SetFocus;
dbEdit3.Clear;
Abort;
end
Else If not (copy(dbEdit3.Text,6,1)=´ ´) then
begin
Application.MessageBox(Pchar(mensagem), ´Erro no CNPJ...´, MB_OK + MB_IconError);
dbEdit3.SetFocus;
dbEdit3.Clear;
Abort;
end
Else If not (copy(dbEdit3.Text,8,1)=´ ´) then
begin
Application.MessageBox(Pchar(mensagem), ´Erro no CNPJ...´, MB_OK + MB_IconError);
dbEdit3.SetFocus;
dbEdit3.Clear;
Abort;
end
Else If not (copy(dbEdit3.Text,9,1)=´ ´) then
begin
Application.MessageBox(Pchar(mensagem), ´Erro no CNPJ...´, MB_OK + MB_IconError);
dbEdit3.SetFocus;
dbEdit3.Clear;
Abort;
end
Else If not (copy(dbEdit3.Text,10,1)=´ ´) then
begin
Application.MessageBox(Pchar(mensagem), ´Erro no CNPJ...´, MB_OK + MB_IconError);
dbEdit3.SetFocus;
dbEdit3.Clear;
Abort;
end
Else If not (copy(dbEdit3.Text,12,1)=´ ´) then
begin
Application.MessageBox(Pchar(mensagem), ´Erro no CNPJ...´, MB_OK + MB_IconError);
dbEdit3.SetFocus;
dbEdit3.Clear;
Abort;
end
Else If not (copy(dbEdit3.Text,13,1)=´ ´) then
begin
Application.MessageBox(Pchar(mensagem), ´Erro no CNPJ...´, MB_OK + MB_IconError);
dbEdit3.SetFocus;
dbEdit3.Clear;
Abort;
end
Else If not (copy(dbEdit3.Text,14,1)=´ ´) then
begin
Application.MessageBox(Pchar(mensagem), ´Erro no CNPJ...´, MB_OK + MB_IconError);
dbEdit3.SetFocus;
dbEdit3.Clear;
Abort;
end
Else If not (copy(dbEdit3.Text,15,1)=´ ´) then
begin
Application.MessageBox(Pchar(mensagem), ´Erro no CNPJ...´, MB_OK + MB_IconError);
dbEdit3.SetFocus;
dbEdit3.Clear;
Abort;
end
Else If not (copy(dbEdit3.Text,17,1)=´ ´) then
begin
Application.MessageBox(Pchar(mensagem), ´Erro no CNPJ...´, MB_OK + MB_IconError);
dbEdit3.SetFocus;
dbEdit3.Clear;
Abort;
end
Else If not (copy(dbEdit3.Text,18,1)=´ ´) then
begin
Application.MessageBox(Pchar(mensagem), ´Erro no CNPJ...´, MB_OK + MB_IconError);
dbEdit3.SetFocus;
dbEdit3.Clear;
Abort;
end;
End;
end;
[/i]