Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki

Delphi: Estructura del código de barras EAN 13 y ejemplo en Delphi de obtención de datos
AjpdSoft


Mostramos en este tutorial cuál es la estructura del código de barras EAN13 y cómo obtenerla con una aplicación en Delphi 6 AjpdSoft Obtener datos EAN13 en Delphi 6. Mostramos también cómo calcular el dígito de control de un código de barras EAN.



 

Estructura de código de barras EAN13

EAN (European Article Number o International Article Number) es un sistema de códigos de barras adoptado por la gran parte de países y empresas del mundo. En el año 2005, la asociación EAN se ha fusionado con la UCC (Uniform Code Council) para formar una nueva y única organización mundial identificada como GS1, con sede en Bélgica. El código EAN más usual es EAN13, constituido por 13 dígitos y con una estructura dividida en cuatro partes:

  1. Los primeros dígitos identifican a través de qué Organización Nacional se ha adscrito una empresa al Sistema EAN. Por ejemplo, en España se encarga de ello Aecoc y su código es el 84.
  2. Referencia del ítem, compuesto de:
    • Código de empresa: es un número compuesto por entre 5 y 8 dígitos, dependiendo de las necesidades de la empresa, que identifica al propietario de la marca.
    • Código de producto: completa los 12 primeros dígitos.
    • Dígito de control: consta de un solo dígito y sirve para verificar que el código leído es correcto. Para calcularlo se suman los dígitos de las posiciones impares, se multiplica por 3, se le suman los dígitos de las posiciones pares y a este resultado se le resta el siguiente múltiplo de 10. El resultado final ha de coincidir con el dígito de control.

Por lo tanto el código de barras EAN 13 puede ser muy variable dependiendo de la empresa que lo utilice. Un ejemplo podría ser:

Código de barras EAN 13

  • [84] Los dos primeros dígitos identifican que la empresa se ha adscrito a Aecoc como Organización Nacional registradora de códigos de barras EAN.
  • [25623] Los 5 dígitos siguientes indican el código de empresa asignado por la Ornazación Nacional Aecoc.
  • [50012] Los 5 dígitos siguientes identifican el producto dentro de la empresa, este código será asignado por la empresa a su libre albedrío.
  • [6] El último dígito es calculado, es el dígito de control.

Cálculo del dígito de control de código de barras EAN13 en Delphi

A continuación mostramos un ejemplo de cálculo de dígito de control de un código de barras EAN13 en Delphi:


function calculoDigitoControlEAN (Ean: String): Integer; overload;
{ Calcula y devuelve el dígito verificador de una cadena de código de barras EAN13 o EAN8
  Devcuelve -1 en caso de ser incorrecto. }
var
  SP, SI, I, L:Integer;
  Impar: Boolean;
begin
  L := Length(Ean);
  if (L = 8) or (L = 13) then
  begin
    SI := 0;
    SP := 0;
    I := L - 1;
    Impar := True;
    repeat
      if Impar then 
        SI := SI + StrToInt(Ean[I]) 
      else 
        SP := SP + StrToInt(Ean[I]);
      Impar := not Impar;
      I := I - 1;
    until I =0;
    if Impar then 
      SI := SI*3 
    else 
     SP := SP*3;
    Result := 10-(SI+SP) mod 10;
  end 
  else 
    Result:= -1;
end;

AjpdSoft Obtener datos EAN13 con código fuente en Delphi 6

A continuación mostramos un ejemplo en Delphi de cómo obtener los datos de un código de barras EAN13, AjpdSoft Obtener datos EAN13 en Delphi 6:

Ejemplo en Delphi de obtención de los datos del código de barras EAN 13

El listado del código fuente completo de AjpdSoft Obtener datos EAN13 en Delphi 6:

 

unit UnidadMenuPrincipal;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, shellapi;

type
  TformObtenerDatosEAN = class(TForm)
    txtEAN13: TEdit;
    bObtenerEAN13: TButton;
    Label1: TLabel;
    Label6: TLabel;
    txtNumDigEmpresa: TEdit;
    GroupBox1: TGroupBox;
    txtOrganizacion: TEdit;
    txtEmpresa: TEdit;
    txtProducto: TEdit;
    txtDC: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    LWEB: TLabel;
    procedure bObtenerEAN13Click(Sender: TObject);
    procedure LWEBClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  formObtenerDatosEAN: TformObtenerDatosEAN;

implementation

{$R *.dfm}

procedure TformObtenerDatosEAN.bObtenerEAN13Click(Sender: TObject);
var
  ean13 : string;
  numDigEmpresa : Integer;
begin
  numDigEmpresa := StrToInt (txtNumDigEmpresa.text);
  if numDigEmpresa > 8 then
    MessageDlg('El número de dígitos máximo para la empresa es de 8.',
        mtWarning, [mbok], 0)
  else
  begin
    if numDigEmpresa < 5 then
      MessageDlg('El número de dígitos mínimo para la empresa es de 5.',
          mtWarning, [mbok], 0)
    else
    begin
      ean13 := txtEAN13.Text;
      txtOrganizacion.Text := copy (ean13, 1, 2);
      txtEmpresa.Text := copy (ean13, 3, numDigEmpresa);
      txtProducto.Text := copy (ean13, 8, 10 - numDigEmpresa);
      txtDC.Text := copy (ean13, 13, 1);
    end;
  end;
end;

procedure TformObtenerDatosEAN.LWEBClick(Sender: TObject);
begin
  ShellExecute(Handle, Nil, PChar('http://www.ajpdsoft.com'),
      Nil, Nil, SW_SHOWNORMAL);
end;

end.

 

Cómo generar códigos de barras EAN8 y EAN13 con Delphi 6

A continuación mostramos un enlace a un tutorial donde explicamos cómo generar códigos de barras EAN8 y EAN13 mediante el lenguaje de programación Delphi 6:

La aplicación con código fuente open source:

Y un videotutorial de su funcionamiento:

 

 

Artículos relacionados


Créditos

Artículo realizado íntegramente por Alonsojpd miembro fundador del Proyecto AjpdSoft.

Artículo en inglés.



Nota: Revisado por Alonso J. Pérez el 03-05-2014.
Anuncios


Enviado el Jueves, 23 marzo a las 18:13:33 por ajpdsoft
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A