Funcao - calcular codigo de barras

Top  Previous  Next

// Calcula o dígito do código de barras recebido. Retorna somente o dígito

function CodBarraDigito(const Valor: string): string;

var

  codigo           : string;

  A, Pares, Impares: Integer;

begin

  Codigo  := RepeteStr('0'12 - Length(Valor)) + Valor;

  Pares   := 0;

  Impares := 0;

  // soma os valores pares e ímpares separadamente

  for A := 1 to 12 do

    if Odd(a) then Impares := Impares + StrToInt(Codigo[A])

    else           Pares   := Pares   + StrToInt(Codigo[A]);

  // extrai o dígito

  Result := IntToStr(Impares + (Pares * 3));

  Result := Copy(Result, Length(Result), 1);

  Result := IntToStr(10 - StrToInt(Result));

  if Result = '10' then Result := '0';

end;

 

function GeraCodBarra(const Valor: string): string;

begin

  Result := Valor + CodBarraDigito(valor);

end;

 

// Verifica se o código de barras está ok.

function CodBarraValido(const valor: string): Boolean;

begin

  Result := (Valor = GeraCodBarra(Copy(Valor, 1, Length(Valor)-1)));

  if StrToInt64Def(Valor, 0) = 0 then Result := False;

end;