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;
|
|