Mostramos 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.
- Cálculo del dígito de control de código de barras EAN13 en Delphi.
- AjpdSoft Obtener datos EAN13 con código fuente en Delphi 6.
- Cómo generar códigos de barras EAN8 y EAN13 con Delphi 6.
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:
- 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.
- 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:
- [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 Organizació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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
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:
El listado del código fuente completo de AjpdSoft Obtener datos EAN13 en Delphi 6:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
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('https://proyectoa.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: