Funcao - gerar CPF, CNPJ validos

Top  Previous  Next

// funcoes para gerar CPF, CNPJ validos

 

// Função que gera números de CPF válidos

function GeraCPF(const Ponto: Boolean): string;

var

  n1, n2, n3, n4, n5, n6, n7, n8, n9, d1, d2: LongInt;

begin

 n1 := Trunc(Random(10));

         n2 := Trunc(Random(10));

         n3 := Trunc(Random(10));

         n4 := Trunc(Random(10));

         n5 := Trunc(Random(10));

         n6 := Trunc(Random(10));

         n7 := Trunc(Random(10));

         n8 := Trunc(Random(10));

         n9 := Trunc(Random(10));

         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) then d2 := 0;

 Result := IntToStr(n1) + IntToStr(n2) + IntToStr(n3) + IntToStr(n4) + IntToStr(n5) + IntToStr(n6) +

            IntToStr(n7) + IntToStr(n8) + IntToStr(n9) + IntToStr(d1) + IntToStr(d2);

 if Ponto then

    Result := Copy(Result, 13) + '.' + Copy(Result, 43) + '.' + Copy(Result, 73) + '-' + Copy(Result, 102);

end;

 

// Função que gera números de CNPJ válidos

function GeraCNPJ(const Ponto: Boolean): String;

var

  n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, d1, d2: LongInt;

begin

 n1  := Trunc(Random(10));

         n2  := Trunc(Random(10));

         n3  := Trunc(Random(10));

         n4  := Trunc(Random(10));

         n5  := Trunc(Random(10));

         n6  := Trunc(Random(10));

         n7  := Trunc(Random(10));

         n8  := Trunc(Random(10));

         n9  := 0;

         n10 := 0;

         n11 := 0;

         n12 := 1;

 d1  := (n12 * 2) + (n11 * 3) + (n10 * 4) + (n9 * 5) + (n8 * 6) + (n7 * 7) +

         (n6  * 8) + (n5  * 9) + (n4  * 2) + (n3 * 3) + (n2 * 4) + (n1 * 5);

         d1 := 11 - (d1 mod 11);

         if (d1 >= 10) then d1 := 0;

         d2 := (d1 * 2) + (n12 * 3) + (n11 * 4) + (n10 * 5) + (n9 * 6) + (n8 * 7) +

        (n7 * 8) + (n6  * 9) + (n5  * 2) + (n4  * 3) + (n3 * 4) + (n2 * 5) + (n1 * 6);

         d2 := 11 - (d2 mod 11);

         if (d2 >= 10) then d2 := 0;

 

 Result := IntToStr(n1) + IntToStr(n2) + IntToStr(n3) + IntToStr(n4 ) + IntToStr(n5 ) + IntToStr(n6 ) +

            IntToStr(n7) + IntToStr(n8) + IntToStr(n9) + IntToStr(n10) + IntToStr(n11) + IntToStr(n12) +

            IntToStr(d1) + IntToStr(d2);

  if Ponto then

    Result := Copy(Result, 12) + '.' + Copy(Result, 33) + '.' + Copy(Result, 63) + '/' +

              Copy(Result, 94) + '-' + Copy(Result, 132);

end;