Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 4145 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

  Pessoal já vi alguns topicos aqui no forum sobre o assunto porém sempre sobre a validação eu queria uma função colocasse os 7 caracteres e ela me retornasse o digito verificador.

 

 

 Grato a todos

Postado (editado)

no ACBrValidador tem a opção ExibeDigitoCorreto,

eu uso assim

eu envio 8 digitos sendo o ultimo um numero aleatório

e mando validar então o componente exibe o digito correto

então eu uso

copy(minhabarra,1,7)+ACBrValidador1.DigitoCalculado;

sempre funcionou comigo

 

só para ter ideia, vc pode usar o demo assim

 

procedure TfrValidador.bValidarClick(Sender: TObject);
begin
  bFormatarClick( Sender );

  ACBrValidador1.Documento   := edDocto.Text ;
  ACBrValidador1.Complemento := edComple.Text ;
  ACBrValidador1.IgnorarChar := edIgnorar.Text ;

  if ACBrValidador1.Validar then
     mMsgErro.Text := 'Documento OK'
  else
   Begin
     mMsgErro.Text := ACBrValidador1.MsgErro ;
     mMsgErro.Lines.Add(Copy(edDocto.Text,1,7)+ACBrValidador1.DigitoCalculado);
   end;
end;

ou se vc preferir

pode usar a função do próprio componente

adicionar na uses Math

 

function CalcularDV(ACodigoGTIN: String): String;
var
 Dig, I, DV: Integer;
begin
DV := 0;
Result := '' ;


// adicionar os zeros a esquerda, se não fizer isso o cálculo não bate
// limite = tamanho maior codigo (gtin14) - 1 (digito)
//ACodigoGTIN := PadR(ACodigoGTIN, 13, '0');
While Length(ACodigoGTIN) < 13 do ACodigoGTIN := '0'+ACodigoGTIN; //eu alterei aqui
for I := Length(ACodigoGTIN) downto 1 do
 begin
 Dig := StrToInt(ACodigoGTIN[I]);
 DV  := DV + (Dig * IfThen(odd(I), 3, 1));
 end;
DV := (Ceil(DV / 10) * 10) - DV ;
Result := IntToStr(DV);
end;

 

Editado por datilas
  • Curtir 1
Postado (editado)

Muito grato colega deu certo e mais uma vez parabéns pelo ACBR  simplesmente fantástico.

 

 Deus de longa vida a seus desenvolvedores.

Editado por luciano_f
  • Este tópico foi criado há 4145 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.