Ir para conteúdo
  • Cadastre-se

Função para validar EAN 13


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

Recommended Posts

Postado

olá a todos, gostaria de saber se alguem tem uma rotina para validar o EAN13, baixei algumas rotinas da internet mais não estão corretas, agora com a obrigatorietadade quero validar o EAN antes de Enviar.

Desde já fico grato se alguem puder me passar.

Att
Rodrigo Guelf
 

  • 1 mês depois ...
  • Solution
Postado

adicione a unit ACBrUtil;

utilize a função "EAN13Valido"

exemplo de uso:

if EAN13Valido(CDSProdutosCOD_BARRA.AsString) then Prod.cEAN:= CDSProdutosCOD_BARRA.AsString;

espero ter ajudado.

Att
Rodrigo Guelf
 

  • Moderadores
Postado

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
  • Moderadores
Postado

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
  • 3 semanas depois ...
Postado

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?

  • Moderadores
Postado

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
Postado

Ok, agora funcionou... exclui a pasta ACBrDiversos e deixei o SVN baixar novamente.

Eu havia baixado esta semana, nao sei pq nao estava validando, mas o importante é que funcionou...

Muito obrigado!

  • 2 semanas depois ...
Postado

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

  • 5 anos depois...
  • Consultores
Postado
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

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • 1 ano depois...
  • Moderadores
Postado
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.

 

 

 

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

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...