Calcular el dígito de control de un EAN13
Artículo por Club Developers · 31 diciembre 2005
6193 vistas
En informática de gestión es usual la impresión de etiquetas con Códigos de Barras. Uno de los sistemas de codificación más utilizados es el EAN-13 en el que se permite codificar la información con doce dígitos numéricos teniéndose que calcular el treceavo dígito, o dígito de control, en función de los doce anteriores.
Sin este cálculo del treceavo dígito ningún lector de códigos de barras reconocerá, y transmitirá, el código leído como código válido.
Sin este cálculo del treceavo dígito ningún lector de códigos de barras reconocerá, y transmitirá, el código leído como código válido.
delphi
function DigitControlCorrecto(Codigo: string): boolean; const Constantes: array[1..12] of byte = (1,3,1,3,1,3,1,3,1,3,1,3); var DC: byte; i: byte; Suma: byte; Superior: byte; begin Result := false; DC := StrToInt( Codigo[Length(Codigo)] ); Delete(Codigo, length(Codigo), 1); // Tenemos el código sin el DC // si es un EAN8 ponemos 0 a la izquierda, no afecta while length(Codigo) < 12 do insert('0', Codigo, 1); Suma := 0; for i := 1 to 12 do Suma := Suma + Constantes[i] * StrToInt(Codigo[i]); Superior := Suma; while Superior mod 10 <> 0 do inc(Superior); if DC = (Superior - Suma) then Result := true; end;