Ir para conteúdo
  • Cadastre-se

dev botao

Função para validar EAN 13


Rodrigo Guelf
Ver Solução Respondido por Rodrigo Guelf,
  • Este tópico foi criado há 2097 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • 1 mês depois ...
  • Moderadores

Atualize o ACBr e veja o demo do ACBrValidador, eu inclui uma rotina que valida os dados do GTIN (antigo EAN).

Existem também uma método direto caso você não queira utilizar o componente, basta adicionar a unit "ACBrValidador" e utilizar o método "ACBrValidadorValidarGTIN(codigo)".

A desvantagem da rotina "EAN13Valido" é que ela não serve para os novos códigos GTIN que englobam o EAN8, EAN13, é codigos de 12 e 14 digitos.

  • Curtir 1

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Atualize o ACBr e veja o demo do ACBrValidador, eu inclui uma rotina que valida os dados do GTIN (antigo EAN).

Existem também uma método direto caso você não queira utilizar o componente, basta adicionar a unit "ACBrValidador" e utilizar o método "ACBrValidadorValidarGTIN(codigo)".

A desvantagem da rotina "EAN13Valido" é que ela não serve para os novos códigos GTIN que englobam o EAN8, EAN13, é codigos de 12 e 14 digitos.

segue ai a explicação.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...

Estou com problemas para utilizar a função "ACBrValidadorValidarGTIN();"

Veja alguns codigos de barras que nao validam...

7896645900026

7898908141016

7893946087173

7897186015095

7891060886139

7898132132019

7506195185568

Debugando, identifiquei que na procedure "TACBrValidador.ValidarGTIN;", o erro acontece na validação do digito verificador. O interessante é que na function "EAN13Valido()" funciona, e por isso tenho que utilizar os dois procedimentos para validar.

Será que alguem poderia me ajudar?

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Estou com problemas para utilizar a função "ACBrValidadorValidarGTIN();"

Veja alguns codigos de barras que nao validam...

7896645900026

7898908141016

7893946087173

7897186015095

7891060886139

7898132132019

7506195185568

Debugando, identifiquei que na procedure "TACBrValidador.ValidarGTIN;", o erro acontece na validação do digito verificador. O interessante é que na function "EAN13Valido()" funciona, e por isso tenho que utilizar os dois procedimentos para validar.

Será que alguem poderia me ajudar?

Testei todos os EANs postados utilizando o método: "ACBrValidadorValidarGTIN" da unit "ACBrValidador" e todos passaram como válidos.

Tem certeza que o seu ACBr está atualizado? se sim faça o seguinte apague o arquivo ACBrValidador e faça novamente a atualização, o SVN vai baixar novamente o arquivo, dai faça novamente o teste.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...

Sei que o tópico foi praticamente resolvido mas gostaria de deixar minha contribuição; eu uso a rotina abaixo; em um Form coloque 1 Edit, 1 Button, 1 Label e 1 ACBrBarCode. No evento OnClick do botão o código abaixo:

procedure TForm1.Button1Click(Sender: TObject);

var

Vvalor, Vinicial : string;

v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,vcalc,varl,vres,vpar,vimp: Integer;

begin

Vvalor := Edit1.Text;

Vinicial := Vvalor;

varl := (Length(Vvalor));

if varl < 12 then

begin

ShowMessage('Número deve conter 12 dígitos');

Edit1.SetFocus;

end

else

begin

v1 := StrToInt(Copy(Vvalor,1,1));

v2 := StrToInt(Copy(Vvalor,2,1));

v3 := StrToInt(Copy(Vvalor,3,1));

v4 := StrToInt(Copy(Vvalor,4,1));

v5 := StrToInt(Copy(Vvalor,5,1));

v6 := StrToInt(Copy(Vvalor,6,1));

v7 := StrToInt(Copy(Vvalor,7,1));

v8 := StrToInt(Copy(Vvalor,8,1));

v9 := StrToInt(Copy(Vvalor,9,1));

v10 := StrToInt(Copy(Vvalor,10,1));

v11 := StrToInt(Copy(Vvalor,11,1));

v12 := StrToInt(Copy(Vvalor,12,1));

vimp := v1 + v3 + v5 + v7 + v9 + v11;

vpar := (v2 + v4 + v6 + v8 + v10 + v12) * 3;

vcalc := (vimp) + (vpar);

vres := 100000000 - vcalc;

Vvalor := IntToStr(vres);

vres := StrToInt(Copy(Vvalor,8,1));

Label1.Caption := Vinicial + '-' + IntToStr(vres);

ACBrBarCode1.Text := Vinicial + IntToStr(vres);

end;

end;

O código-fonte completo é:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ACBrBarCode;

type

TForm1 = class(TForm)

Edit1: TEdit;

Label1: TLabel;

Button1: TButton;

ACBrBarCode1: TACBrBarCode;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var

Vvalor, Vinicial : string;

v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,vcalc,varl,vres,vpar,vimp: Integer;

begin

Vvalor := Edit1.Text;

Vinicial := Vvalor;

varl := (Length(Vvalor));

if varl < 12 then

begin

ShowMessage('Número deve conter 12 dígitos');

Edit1.SetFocus;

end

else

begin

v1 := StrToInt(Copy(Vvalor,1,1));

v2 := StrToInt(Copy(Vvalor,2,1));

v3 := StrToInt(Copy(Vvalor,3,1));

v4 := StrToInt(Copy(Vvalor,4,1));

v5 := StrToInt(Copy(Vvalor,5,1));

v6 := StrToInt(Copy(Vvalor,6,1));

v7 := StrToInt(Copy(Vvalor,7,1));

v8 := StrToInt(Copy(Vvalor,8,1));

v9 := StrToInt(Copy(Vvalor,9,1));

v10 := StrToInt(Copy(Vvalor,10,1));

v11 := StrToInt(Copy(Vvalor,11,1));

v12 := StrToInt(Copy(Vvalor,12,1));

vimp := v1 + v3 + v5 + v7 + v9 + v11;

vpar := (v2 + v4 + v6 + v8 + v10 + v12) * 3;

vcalc := (vimp) + (vpar);

vres := 100000000 - vcalc;

Vvalor := IntToStr(vres);

vres := StrToInt(Copy(Vvalor,8,1));

Label1.Caption := Vinicial + '-' + IntToStr(vres);

ACBrBarCode1.Text := Vinicial + IntToStr(vres);

end;

end;

end.

Espero ter ajudado em algo. :D

Analista Desenvolvedor

www.sisloja.hdfree.com.br

Link para o comentário
Compartilhar em outros sites

  • 5 anos depois...
  • Moderadores
5 minutos atrás, ABEL CELSO DA COSTA CARDOS disse:

Boa tarde, eu uso o acbrmonitorplus, existe uma opção para eu testar o cean?

Obrigado

Boa tarde

não tem essa função no Monitor

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...
  • Moderadores
27 minutos atrás, Helio Beltrao Jr. disse:

Bom dia,

Pessoal vi em um poster acima que nao tem como verificar o EAN ou GTIN no ACBRMONITORPLUS mais tem alguma previsao para incluir este validador nele ?

3.1 - Não faça flooding - Inundar o fórum com posts repetidos, com a mesma dúvida ou as mesmas palavras é chamado de flooding. Isso é proibido. Apenas um post feito no lugar certo é suficiente. Pesquise antes de postar, talvez sua dúvida já está respondida em outro post. Favor leia as regras do fórum.

Tópico continuado aqui:

 

  • Curtir 1
Equipe ACBr

Felipe Eduardo Resende Mesquita

Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

 

 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2097 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.