Calcular digito de control codigo de barras EAN13  

Enviado Por: Diego RedRaven
Web : http://www.garcia-cuervo.com
Email: N.A.
Fecha: 26/02/03

Truco accedido 107 veces

 


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 mas 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 digito, digito de control, en función de los doce anteriores. Sin este calculo del treceavo digito ningún lector de códigos de barras reconocerá, y transmitirá, el código leído como código válido.
Ahí te mando la función que lo calcula: Entrada String de doce dígitos numéricos, Salida Integer con el digito de control calculado.


 function Calcula_digito_de_control_EAN13(CodS:string):integer;
 var
    i,r,rd: integer;
    CodN: array[1..12] of integer;
    b: boolean;
 begin
      // 1ª fase: calcula suma de digitos x 1 si impar, x 3 si par
      b := false; r := 0;
      for i := 1 to 12 do
      begin
           CodN[i] := 0;
           b := Not b;
           if b then
           begin
                CodN[i] := StrToInt(Copy(CodS,i,1)) * 1;
           end
           else
           begin
                CodN[i] := StrToInt(Copy(CodS,i,1)) * 3;
           end;
           r := r + CodN[i];
      end;
      rd := 0;
      // 2ª fase encuentra decena superior
      for i := r to r + 10 do
      begin
           if (i / 10) = Int(i / 10) then rd := i - r;
      end;
      if (rd = 10) then rd := 0;
      result := rd;
 end;