CNPJ CNH validacao.

05/02/2003

2

Alguem tem a funcao que valida cnpj e uma funcao para cnh facil ai ?

Responder

Posts

05/02/2003

Amigo me lembro de ter visto um exemplo no site do cludelphi para validação de cnpj...
[url]http://www.clubedelphi.com.br/dicamacete/dicamacete.html[/url]

Responder

05/02/2003

Function TPrincipal.Verifica_CGCCPF(CODIGO:STRING):BOOLEAN;
Var Dig:Array[1..20] of INTEGER;
Digito1,Digito2,CONT_FOR:Integer;
Begin
Result := True ;
try
FOR CONT_FOR := 1 TO 20 DO
DIG[CONT_FOR] := 0;
DIGITO1 := 0;
DIGITO2 := 0;

IF LENGTH(CODIGO)=18 THEN
BEGIN
FOR CONT_FOR := 1 TO 18 DO
BEGIN
IF (COPY(codigo, CONT_FOR, 1) <> ´.´) AND
(COPY(codigo, CONT_FOR, 1) <> ´,´) AND
(COPY(codigo, CONT_FOR, 1) <> ´/´) AND
(COPY(codigo, CONT_FOR, 1) <> ´-´) THEN
DIG[CONT_FOR] := STRTOINT(COPY(codigo, CONT_FOR, 1)) ;
END;
DIG[1] := DIG[1] * 5;
DIG[2] := DIG[2] * 4;
DIG[4] := DIG[4] * 3;
DIG[5] := DIG[5] * 2;
DIG[6] := DIG[6] * 9;
DIG[8] := DIG[8] * 8;
DIG[9] := DIG[9] * 7;
DIG[10] := DIG[10] * 6;
DIG[12] := DIG[12] * 5;
DIG[13] := DIG[13] * 4;
DIG[14] := DIG[14] * 3;
DIG[15] := DIG[15] * 2;
FOR CONT_FOR := 1 TO 15 DO
DIG[19] := DIG[19] + DIG[CONT_FOR];

DIGITO1 := Trunc(DIG[19] / 11);
DIGITO1 := DIGITO1 * 11;
DIGITO1 := DIG[19] - DIGITO1;
DIGITO1 := 11 - DIGITO1;

IF DIGITO1 >= 10 THEN DIGITO1 := 0;
IF DIGITO1 <> DIG[17] THEN
BEGIN
Showmessage(´CNPJ/CPF inválido´);
Verifica_CGCCPF:=FALSE;
Exit;
END;

FOR CONT_FOR := 1 TO 18 DO
BEGIN
IF (COPY(codigo, CONT_FOR, 1) <> ´.´) AND
(COPY(codigo, CONT_FOR, 1) <> ´/´) AND
(COPY(codigo, CONT_FOR, 1) <> ´-´) THEN
DIG[CONT_FOR] := STRTOINT(COPY(codigo, CONT_FOR, 1)) ;
END;
DIG[1] := DIG[1] * 6;
DIG[2] := DIG[2] * 5;
DIG[4] := DIG[4] * 4;
DIG[5] := DIG[5] * 3;
DIG[6] := DIG[6] * 2;
DIG[8] := DIG[8] * 9;
DIG[9] := DIG[9] * 8;
DIG[10] := DIG[10] * 7;
DIG[12] := DIG[12] * 6;
DIG[13] := DIG[13] * 5;
DIG[14] := DIG[14] * 4;
DIG[15] := DIG[15] * 3;
DIG[17] := DIG[17] * 2;
FOR CONT_FOR := 1 TO 17 DO
DIG[20] := DIG[20] + DIG[CONT_FOR];

DIGITO2 := trunc(DIG[20] / 11);
DIGITO2 := DIGITO2 * 11;
DIGITO2 := DIG[20] - DIGITO2;
DIGITO2 := 11 - DIGITO2;

IF DIGITO2 >= 10 THEN DIGITO2 := 0;
IF DIGITO2 <> DIG[18] THEN
BEGIN
SHOWMESSAGE(´Cnpj inválido´);
Verifica_CGCCPF:=FALSE;
Exit;
END;
END

//** comeca a testar i cpf ********
ELSE BEGIN // Testar CPF
FOR CONT_FOR := 1 TO 14 DO
BEGIN
IF (COPY(codigo, CONT_FOR, 1) <> ´.´) AND
(COPY(codigo, CONT_FOR, 1) <> ´/´) AND
(COPY(codigo, CONT_FOR, 1) <> ´-´) THEN
DIG[CONT_FOR] := STRTOINT(COPY(codigo, CONT_FOR, 1)) ;
END;
DIG[1] := DIG[1] * 10;
DIG[2] := DIG[2] * 9;
DIG[3] := DIG[3] * 8;
DIG[5] := DIG[5] * 7;
DIG[6] := DIG[6] * 6;
DIG[7] := DIG[7] * 5;
DIG[9] := DIG[9] * 4;
DIG[10] := DIG[10] * 3;
DIG[11] := DIG[11] * 2;
FOR CONT_FOR := 1 TO 11 DO
DIG[19] := DIG[19] + DIG[CONT_FOR];

DIGITO1 := Trunc(DIG[19] / 11);
DIGITO1 := DIGITO1 * 11;
DIGITO1 := DIG[19] - DIGITO1;
DIGITO1 := 11 - DIGITO1;

IF DIGITO1 >= 10 THEN DIGITO1 := 0;
IF DIGITO1 <> DIG[13] THEN
BEGIN
SHOWMESSAGE(´Cpf Inválido´);
Verifica_CGCCPF:=FALSE;
Exit;
END;
FOR CONT_FOR := 1 TO 14 DO
BEGIN
IF (COPY(codigo, CONT_FOR, 1) <> ´.´) AND
(COPY(codigo, CONT_FOR, 1) <> ´-´) THEN
DIG[CONT_FOR] := STRTOINT(COPY(codigo, CONT_FOR, 1)) ;
END;
DIG[1] := DIG[1] * 11;
DIG[2] := DIG[2] * 10;
DIG[3] := DIG[3] * 9;
DIG[5] := DIG[5] * 8;
DIG[6] := DIG[6] * 7;
DIG[7] := DIG[7] * 6;
DIG[9] := DIG[9] * 5;
DIG[10] := DIG[10] * 4;
DIG[11] := DIG[11] * 3;
DIG[13] := DIG[13] * 2;
FOR CONT_FOR := 1 TO 13 DO
DIG[20] := DIG[20] + DIG[CONT_FOR];

DIGITO2 := trunc(DIG[20] / 11);
DIGITO2 := DIGITO2 * 11;
DIGITO2 := DIG[20] - DIGITO2;
DIGITO2 := 11 - DIGITO2;

IF DIGITO2 >= 10 THEN DIGITO2 := 0;
IF DIGITO2 <> DIG[14] THEN
BEGIN
SHOWMESSAGE(´Cpf Inválido´);
Verifica_CGCCPF:=FALSE;
Exit;
END;
Result := True;
END;
except
SHOWMESSAGE(´Nº de caracteres inválido!´);
Result := False;
end;
end;

Responder

05/02/2003

Function TPrincipal.Verifica_CGCCPF(CODIGO:STRING):BOOLEAN;
Var Dig:Array[1..20] of INTEGER;
Digito1,Digito2,CONT_FOR:Integer;
Begin
Result := True ;
try
FOR CONT_FOR := 1 TO 20 DO
DIG[CONT_FOR] := 0;
DIGITO1 := 0;
DIGITO2 := 0;

IF LENGTH(CODIGO)=18 THEN
BEGIN
FOR CONT_FOR := 1 TO 18 DO
BEGIN
IF (COPY(codigo, CONT_FOR, 1) <> ´.´) AND
(COPY(codigo, CONT_FOR, 1) <> ´,´) AND
(COPY(codigo, CONT_FOR, 1) <> ´/´) AND
(COPY(codigo, CONT_FOR, 1) <> ´-´) THEN
DIG[CONT_FOR] := STRTOINT(COPY(codigo, CONT_FOR, 1)) ;
END;
DIG[1] := DIG[1] * 5;
DIG[2] := DIG[2] * 4;
DIG[4] := DIG[4] * 3;
DIG[5] := DIG[5] * 2;
DIG[6] := DIG[6] * 9;
DIG[8] := DIG[8] * 8;
DIG[9] := DIG[9] * 7;
DIG[10] := DIG[10] * 6;
DIG[12] := DIG[12] * 5;
DIG[13] := DIG[13] * 4;
DIG[14] := DIG[14] * 3;
DIG[15] := DIG[15] * 2;
FOR CONT_FOR := 1 TO 15 DO
DIG[19] := DIG[19] + DIG[CONT_FOR];

DIGITO1 := Trunc(DIG[19] / 11);
DIGITO1 := DIGITO1 * 11;
DIGITO1 := DIG[19] - DIGITO1;
DIGITO1 := 11 - DIGITO1;

IF DIGITO1 >= 10 THEN DIGITO1 := 0;
IF DIGITO1 <> DIG[17] THEN
BEGIN
Showmessage(´CNPJ/CPF inválido´);
Verifica_CGCCPF:=FALSE;
Exit;
END;

FOR CONT_FOR := 1 TO 18 DO
BEGIN
IF (COPY(codigo, CONT_FOR, 1) <> ´.´) AND
(COPY(codigo, CONT_FOR, 1) <> ´/´) AND
(COPY(codigo, CONT_FOR, 1) <> ´-´) THEN
DIG[CONT_FOR] := STRTOINT(COPY(codigo, CONT_FOR, 1)) ;
END;
DIG[1] := DIG[1] * 6;
DIG[2] := DIG[2] * 5;
DIG[4] := DIG[4] * 4;
DIG[5] := DIG[5] * 3;
DIG[6] := DIG[6] * 2;
DIG[8] := DIG[8] * 9;
DIG[9] := DIG[9] * 8;
DIG[10] := DIG[10] * 7;
DIG[12] := DIG[12] * 6;
DIG[13] := DIG[13] * 5;
DIG[14] := DIG[14] * 4;
DIG[15] := DIG[15] * 3;
DIG[17] := DIG[17] * 2;
FOR CONT_FOR := 1 TO 17 DO
DIG[20] := DIG[20] + DIG[CONT_FOR];

DIGITO2 := trunc(DIG[20] / 11);
DIGITO2 := DIGITO2 * 11;
DIGITO2 := DIG[20] - DIGITO2;
DIGITO2 := 11 - DIGITO2;

IF DIGITO2 >= 10 THEN DIGITO2 := 0;
IF DIGITO2 <> DIG[18] THEN
BEGIN
SHOWMESSAGE(´Cnpj inválido´);
Verifica_CGCCPF:=FALSE;
Exit;
END;
END

//** comeca a testar i cpf ********
ELSE BEGIN // Testar CPF
FOR CONT_FOR := 1 TO 14 DO
BEGIN
IF (COPY(codigo, CONT_FOR, 1) <> ´.´) AND
(COPY(codigo, CONT_FOR, 1) <> ´/´) AND
(COPY(codigo, CONT_FOR, 1) <> ´-´) THEN
DIG[CONT_FOR] := STRTOINT(COPY(codigo, CONT_FOR, 1)) ;
END;
DIG[1] := DIG[1] * 10;
DIG[2] := DIG[2] * 9;
DIG[3] := DIG[3] * 8;
DIG[5] := DIG[5] * 7;
DIG[6] := DIG[6] * 6;
DIG[7] := DIG[7] * 5;
DIG[9] := DIG[9] * 4;
DIG[10] := DIG[10] * 3;
DIG[11] := DIG[11] * 2;
FOR CONT_FOR := 1 TO 11 DO
DIG[19] := DIG[19] + DIG[CONT_FOR];

DIGITO1 := Trunc(DIG[19] / 11);
DIGITO1 := DIGITO1 * 11;
DIGITO1 := DIG[19] - DIGITO1;
DIGITO1 := 11 - DIGITO1;

IF DIGITO1 >= 10 THEN DIGITO1 := 0;
IF DIGITO1 <> DIG[13] THEN
BEGIN
SHOWMESSAGE(´Cpf Inválido´);
Verifica_CGCCPF:=FALSE;
Exit;
END;
FOR CONT_FOR := 1 TO 14 DO
BEGIN
IF (COPY(codigo, CONT_FOR, 1) <> ´.´) AND
(COPY(codigo, CONT_FOR, 1) <> ´-´) THEN
DIG[CONT_FOR] := STRTOINT(COPY(codigo, CONT_FOR, 1)) ;
END;
DIG[1] := DIG[1] * 11;
DIG[2] := DIG[2] * 10;
DIG[3] := DIG[3] * 9;
DIG[5] := DIG[5] * 8;
DIG[6] := DIG[6] * 7;
DIG[7] := DIG[7] * 6;
DIG[9] := DIG[9] * 5;
DIG[10] := DIG[10] * 4;
DIG[11] := DIG[11] * 3;
DIG[13] := DIG[13] * 2;
FOR CONT_FOR := 1 TO 13 DO
DIG[20] := DIG[20] + DIG[CONT_FOR];

DIGITO2 := trunc(DIG[20] / 11);
DIGITO2 := DIGITO2 * 11;
DIGITO2 := DIG[20] - DIGITO2;
DIGITO2 := 11 - DIGITO2;

IF DIGITO2 >= 10 THEN DIGITO2 := 0;
IF DIGITO2 <> DIG[14] THEN
BEGIN
SHOWMESSAGE(´Cpf Inválido´);
Verifica_CGCCPF:=FALSE;
Exit;
END;
Result := True;
END;
except
SHOWMESSAGE(´Nº de caracteres inválido!´);
Result := False;
end;
end;

Responder

05/02/2003

Obrigado.. Mas nao era a cnpj jjnto com cpf.. ( apesar que aproveito o lado implentado da cnpj ) queria a do CNH do motorista.. alguem sabe se existe ?:

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar