Fórum Simplificar verificação dentro de uma função #564136
16/10/2016
0
Gostaria de enxutar meu codigo e colocar dentro de uma função, de que maneira eu poderia simplificar o mesmo colocando dentro de uma função ?
Poderiam me dizer se o algoritmo de verificação esta correto ? estou meio em duvida ....
Poderiam me dizer se o algoritmo de verificação esta correto ? estou meio em duvida ....
if Length(edtCnpjOrCpfCliente.Text) > 0 then
begin
if (Length(edtCnpjOrCpfCliente.Text) = 14) then
begin
lblCnpjVerifica.Visible := false;
operacao := StrToInt(edtCnpjOrCpfCliente.Text[1]) * 5 + StrToInt(edtCnpjOrCpfCliente.Text[2]) * 4 +
StrToInt(edtCnpjOrCpfCliente.Text[3]) * 3 + StrToInt(edtCnpjOrCpfCliente.Text[4]) * 2 +
StrToInt(edtCnpjOrCpfCliente.Text[5]) * 9 + StrToInt(edtCnpjOrCpfCliente.Text[6]) * 8 +
StrToInt(edtCnpjOrCpfCliente.Text[7]) * 7 + StrToInt(edtCnpjOrCpfCliente.Text[8]) * 6 +
StrToInt(edtCnpjOrCpfCliente.Text[9]) * 5 + StrToInt(edtCnpjOrCpfCliente.Text[10]) * 4 +
StrToInt(edtCnpjOrCpfCliente.Text[11]) * 3 + StrToInt(edtCnpjOrCpfCliente.Text[12]) * 2;
digito1 := (operacao mod 11);
if digito1 < 2 then
begin
digito1 := 0;
end
else
begin
digito1 := 11 - (operacao mod 11);
end;
operacao := StrToInt(edtCnpjOrCpfCliente.Text[1]) * 6 + StrToInt(edtCnpjOrCpfCliente.Text[2]) * 5 +
StrToInt(edtCnpjOrCpfCliente.Text[3]) * 4 + StrToInt(edtCnpjOrCpfCliente.Text[4]) * 3 +
StrToInt(edtCnpjOrCpfCliente.Text[5]) * 2 + StrToInt(edtCnpjOrCpfCliente.Text[6]) * 9 +
StrToInt(edtCnpjOrCpfCliente.Text[7]) * 8 + StrToInt(edtCnpjOrCpfCliente.Text[8]) * 7 +
StrToInt(edtCnpjOrCpfCliente.Text[9]) * 6 + StrToInt(edtCnpjOrCpfCliente.Text[10]) * 5 +
StrToInt(edtCnpjOrCpfCliente.Text[11]) * 4 + StrToInt(edtCnpjOrCpfCliente.Text[12]) * 3 +
digito1 * 2;
digito2 := (operacao mod 11);
if digito2 < 2 then
begin
digito2 := 0;
end
else
begin
digito2 := 11 - (operacao mod 11);
end;
verificaCnpj(StrToInt(edtCnpjOrCpfCliente.Text[13]),digito1,StrToInt(edtCnpjOrCpfCliente.Text[14]),digito2);
end
else
begin
if Length(edtCnpjOrCpfCliente.Text) = 11 then
begin
operacao := StrToInt(edtCnpjOrCpfCliente.Text[1]) * 10 + StrToInt(edtCnpjOrCpfCliente.Text[2]) * 9 +
StrToInt(edtCnpjOrCpfCliente.Text[3]) * 8 +StrToInt(edtCnpjOrCpfCliente.Text[4]) * 7 +
StrToInt(edtCnpjOrCpfCliente.Text[5]) * 6 +StrToInt(edtCnpjOrCpfCliente.Text[6]) * 5 +
StrToInt(edtCnpjOrCpfCliente.Text[7]) * 4 +StrToInt(edtCnpjOrCpfCliente.Text[8]) * 3 +
StrToInt(edtCnpjOrCpfCliente.Text[9]) * 2;
digito1 := (operacao mod 11);
if digito1 < 2 then
begin
digito1 := 0;
end
else
begin
digito1 := 11 - (operacao mod 11);
end;
operacao := StrToInt(edtCnpjOrCpfCliente.Text[1]) * 11 + StrToInt(edtCnpjOrCpfCliente.Text[2]) * 10 +
StrToInt(edtCnpjOrCpfCliente.Text[3]) * 9 +StrToInt(edtCnpjOrCpfCliente.Text[4]) * 8 +
StrToInt(edtCnpjOrCpfCliente.Text[5]) * 7 +StrToInt(edtCnpjOrCpfCliente.Text[6]) * 6 +
StrToInt(edtCnpjOrCpfCliente.Text[7]) * 5 +StrToInt(edtCnpjOrCpfCliente.Text[8]) * 4 +
StrToInt(edtCnpjOrCpfCliente.Text[9]) * 3 + digito1 * 2;
digito2 := (operacao mod 11);
if digito2 < 2 then
begin
digito2 := 0;
end
else
begin
digito2 := 11 - (operacao mod 11);
end;
verificaCpf(digito1,StrToInt(edtCnpjOrCpfCliente.Text[10]),digito2,StrToInt(edtCnpjOrCpfCliente.Text[11]));
end
else
begin
lblCnpjVerifica.Visible := true;
lblCnpjVerifica.Caption := 'Dado invalido.';
end;
end;
end;
end;Leandro
Curtir tópico
+ 0
Responder
Post mais votado
03/11/2016
Não sei se voce é do tipo de programador que utiliza componentes de terceiros, mas no ACBR, existe um componente chamado ACBrValidador que realiza validações de Cnpj, Cpf, Cartao de Credito, Insc. Estadual, CNH, GTIN, Email entre outros documentos.
Araujo Junior.
Responder
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)