aff q grandes hehehhe (não importa funcionando
né!)
mesmo assim segue minhas funcoes de CPF e CNPJ:
//ela aceita semente CPF e CNPJ errados iguais a
00... caso tenha q cadastrar alguem e nao tem
o documento em maos
Function ValidaCPF(CPF:String) :Boolean;
Const
TAM_CPF = 11;
Var
i, Aux :Integer;
Str :String;
Begin
Result := True;
Aux := 0;
For i := 1 To Length(CPF) Do
If CPF[i] = ' ' Then Aux := Aux + 1;
If (Aux 0) And (Aux 11) Then
Begin
Result := False;
Exit
End Else
If CPF = ' . . - ' Then Exit;
For i := 1 To Length(Trim(CPF)) Do
If (CPF[i] In ['0'..'9']) Then Str :=
Str+CPF[i];
CPF :=
StringOfChar('0',TAM_CPF-Length(Str))+Str;
Aux := 0;
For i := 2 To 10 Do Aux :=
Aux+(StrToInt(Copy(CPF,11-i,1))*i) ;
Aux := Aux*10;
Aux := (Aux Mod 11);
If Aux = 10 Then Aux := 0;
If StrToInt(Copy(CPF,10,1)) = Aux Then
Begin
Aux := Aux*2;
For i := 3 To 11 Do Aux :=
Aux+(StrToInt(Copy(CPF,12-i,1))*i);
Aux := Aux*10;
Aux := (Aux Mod 11);
If Aux = 10 Then Aux := 0;
Result := (StrToInt(Copy(CPF,11,1)) = Aux);
End Else Result := False;
For i := 2 To Length(CPF) Do
If CPF[i] CPF[i-1] Then Break;
If (CPF[1] '0') And (i = 12) Then Result :=
False;
End;
Function ValidaCGC(CGC :String) :Boolean;
Const
TAM_CGC = 14;
Var
i, Aux :Integer;
Str :String;
Begin
Result := True;
Aux := 0;
For i := 1 To Length(CGC) Do
If CGC[i] = ' ' Then Aux := Aux + 1;
If (Aux 0) And (Aux 14) Then
Begin
Result := False;
Exit
End Else
If CGC = ' . . / - ' Then Exit;
For i := 1 To Length(Trim(CGC)) Do
If (CGC[i] In ['0'..'9']) Then Str :=
Str+CGC[i];
CGC :=
StringOfChar('0',TAM_CGC-Length(Str))+Str;
Aux := 0;
For i := 2 To 9 Do Aux := Aux +
((StrToInt(Copy(CGC,14-i,1)))*i);
For i := 2 To 5 Do Aux := Aux +
((StrToInt(Copy(CGC, 6-i,1)))*i);
Aux := Aux*10;
Aux := (Aux Mod 11);
If Aux = 10 Then Aux := 0;
If StrToInt(Copy(CGC,13,1)) = Aux Then
Begin
Aux := Aux*2;
For i := 3 To 9 Do Aux := Aux +
(StrToInt(Copy(CGC,15-i,1))*i);
For i := 2 To 6 Do Aux := Aux +
(StrToInt(Copy(CGC, 7-i,1))*i);
Aux := Aux*10;
Aux := (Aux Mod 11);
If Aux = 10 Then Aux := 0;
Result := (StrToInt(Copy(CGC,14,1)) = Aux);
End Else Result := False;
For i := 2 To Length(CGC) Do
If CGC[i] CGC[i-1] Then Break;
If (CGC[1] '0') And (i = 15) Then Result :=
False;
End;
--- Eduardo Silva ® [EMAIL PROTECTED]
escreveu:
-
function ValidaCPF(num:string): Boolean;
var
n1,n2,n3,n4,n5,n6,n7,n8,n9 : integer;
d1,d2 : integer;
digitado, calculado: String;
begin
if num = '000' then
begin
ValidaCPF := False;
messagebox(application.handle,'CPF
inválido!','Erro', MB_OK or
MB_ICONERROR);
end
else
if num = '111' then
begin
ValidaCPF := False;
messagebox(application.handle,'CPF
inválido!','Erro', MB_OK or
MB_ICONERROR);
end
else
if num = '222' then
begin
ValidaCPF := False;
messagebox(application.handle,'CPF
inválido!','Erro', MB_OK or
MB_ICONERROR);
end
else
if num = '333' then
begin
ValidaCPF := False;
messagebox(application.handle,'CPF
inválido!','Erro', MB_OK or
MB_ICONERROR);
end
else
if num = '444' then
begin
ValidaCPF := False;
messagebox(application.handle,'CPF
inválido!','Erro', MB_OK or
MB_ICONERROR);
end
else
if num = '555' then
begin
ValidaCPF := False;
messagebox(application.handle,'CPF
inválido!','Erro', MB_OK or
MB_ICONERROR);
end
else
if num = '666' then
begin
ValidaCPF := False;
messagebox(application.handle,'CPF
inválido!','Erro', MB_OK or
MB_ICONERROR);
end
else
if num = '777' then
begin
ValidaCPF := False;
messagebox(application.handle,'CPF
inválido!','Erro', MB_OK or
MB_ICONERROR);
end
else
if num = '888' then
begin
ValidaCPF := False;
messagebox(application.handle,'CPF
inválido!','Erro', MB_OK or
MB_ICONERROR);
end
else
if num = '999' then
begin
ValidaCPF := False;
messagebox(application.handle,'CPF
inválido!','Erro', MB_OK or
MB_ICONERROR);
end
else
begin
n1 := StrToInt(num[1]);
n2 := StrToInt(num[2]);
n3 := StrToInt(num[3]);
n4 := StrToInt(num[4]);
n5 := StrToInt(num[5]);
n6 := StrToInt(num[6]);
n7 := StrToInt(num[7]);
n8 := StrToInt(num[8]);
n9 := StrToInt(num[9]);
d1 := n9 * 2 + n8 * 3 + n7 * 4 + n6 * 5 +
n5 * 6 + n4 * 7 + n3 * 8 +
n2 * 9 + n1 * 10;
d1 := 11-(d1 mod 11);
if d1 = 10 then
d1 := 0;
d2 := d1 * 2 + n9 * 3 + n8 * 4 + n7 * 5 +
n6 * 6 + n5 * 7 + n4 * 8 +
n3 * 9 + n2 * 10 + n1 * 11;
d2 := 11 - (d2 mod 11);
if d2 = 10