function CPF(Num: String): Boolean; var Temp: Integer; Numero: String; n: array [1..9] of Integer; d: array [1..2] of Integer; begin Numero:=''; for Temp:=1 to 14 do if Num[Temp] in ['0'..'9'] then Numero:=Numero+Num[Temp]; for Temp:=1 to 9 do n[Temp]:=StrToInt(Numero[Temp]); d[1]:=n[9]*2+n[8]*3+n[7]*4+n[6]*5+n[5]*6+n[4]*7+n[3]*8+n[2]*9+n[1]*10; d[1]:=11-(d[1] mod 11); if d[1]>=10 then d[1]:=0; d[2]:=d[1]*2+n[9]*3+n[8]*4+n[7]*5+n[6]*6+n[5]*7+n[4]*8+n[3]*9+n[2]*10+n[1]*11; d[2]:=11-(d[2] mod 11); if d[2]>=10 then d[2]:=0; if IntToStr(d[1])+IntToStr(d[2])=Numero[10]+Numero[11] then CPF:=True else CPF:=False; end; function CGC(Num: String): Boolean; var Temp: Integer; Numero: String; n: array [1..12] of Integer; d: array [1..2] of Integer; begin Numero:=''; for Temp:=1 to 18 do if Num[Temp] in ['0'..'9'] then Numero:=Numero+Num[Temp]; for Temp:=1 to 12 do n[Temp]:=StrToInt(Numero[Temp]); d[1]:=n[12]*2+n[11]*3+n[10]*4+n[9]*5+n[8]*6+n[7]*7+n[6]*8+n[5]*9+n[4]*2+n[3]*3+n[2]*4+n[1]*5; d[1]:=11-(d[1] mod 11); if d[1]>=10 then d[1]:=0; d[2]:=d[1]*2+n[12]*3+n[11]*4+n[10]*5+n[9]*6+n[8]*7+n[7]*8+n[6]*9+n[5]*2+n[4]*3+n[3]*4+n[2]*5+n[1]*6; d[2]:=11-(d[2] mod 11); if d[2]>=10 then d[2]:=0; if IntToStr(d[1])+IntToStr(d[2])=Numero[13]+Numero[14] then CGC:=True else CGC:=False; end;