Código Delphi
// Função: Validar CGC ³.
// Testa se o CGC é Válido ou Não.
Código
function C_G_C( Dados: string ): boolean;
var
CGC: string;
Digito: integer;
Soma: integer;
Contar: integer;
begin try if Length( Dados ) > 14 then
Dados := Copy( Dados, 1, 2 ) + Copy( Dados, 4, 3 ) + Copy( Dados, 8, 3 ) + Copy( Dados, 12, 4 ) + Copy( Dados, 17, 2 );
if Length( Trim( Dados ) ) = 0 then begin
Result := True;
exit; end;
CGC := Copy( Dados, 1, 12 );
Soma := 0;
for Contar := 1 to 4 do
Soma := Soma + StrToInt( copy( CGC, Contar, 1 ) ) * ( 6 - Contar );
for Contar := 1 to 8 do
Soma := Soma + StrToInt( copy( CGC, Contar + 4, 1 ) ) * ( 10 - Contar );
Digito := 11 - Soma mod 11;
if Digito in [ 10, 11 ] then
CGC := CGC + '0'
else
CGC := CGC +IntToStr( Digito );
Soma := 0;
for Contar := 1 to 5 do
Soma := Soma + StrToInt( copy( CGC, Contar, 1 ) ) * ( 7 - Contar );
for Contar := 1 to 8 do
Soma := Soma + StrToInt( copy( CGC, Contar + 5, 1 ) ) * ( 10 - Contar );
Digito := 11 - Soma mod 11;
if Digito in [ 10, 11 ] then
CGC := CGC + '0'
else
CGC := CGC + IntToStr( Digito );
if Dados <> CGC then
Result := false
else
Result := true;
except on econverterror do
Result := false; end; end;
var
CGC: string;
Digito: integer;
Soma: integer;
Contar: integer;
begin try if Length( Dados ) > 14 then
Dados := Copy( Dados, 1, 2 ) + Copy( Dados, 4, 3 ) + Copy( Dados, 8, 3 ) + Copy( Dados, 12, 4 ) + Copy( Dados, 17, 2 );
if Length( Trim( Dados ) ) = 0 then begin
Result := True;
exit; end;
CGC := Copy( Dados, 1, 12 );
Soma := 0;
for Contar := 1 to 4 do
Soma := Soma + StrToInt( copy( CGC, Contar, 1 ) ) * ( 6 - Contar );
for Contar := 1 to 8 do
Soma := Soma + StrToInt( copy( CGC, Contar + 4, 1 ) ) * ( 10 - Contar );
Digito := 11 - Soma mod 11;
if Digito in [ 10, 11 ] then
CGC := CGC + '0'
else
CGC := CGC +IntToStr( Digito );
Soma := 0;
for Contar := 1 to 5 do
Soma := Soma + StrToInt( copy( CGC, Contar, 1 ) ) * ( 7 - Contar );
for Contar := 1 to 8 do
Soma := Soma + StrToInt( copy( CGC, Contar + 5, 1 ) ) * ( 10 - Contar );
Digito := 11 - Soma mod 11;
if Digito in [ 10, 11 ] then
CGC := CGC + '0'
else
CGC := CGC + IntToStr( Digito );
if Dados <> CGC then
Result := false
else
Result := true;
except on econverterror do
Result := false; end; end;