Ir para conteúdo
  • Cadastre-se

dev botao

Funcão Para Gerar Digito Verificador Ean-8


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

Recommended Posts

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
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3892 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.

The popup will be closed in 10 segundos...