Un lugar de encuentro para los programadores de habla hispana

Un lugar de encuentro para los programadores de habla hispana

Buscar

Entrar

Puedes acceder utilizando tu cuenta de usuario del foro.

Si no dispone de cuenta, puede crear una accediendo al formulario de registro del foro.



Validar un código de barras en EAN8 / EAN13 Imprimir
Ideas - Delphi

 
function EsEan(CodigoEan : String) : Boolean;
var
  CheckSum, DigitoOrig : String;
  i, Digito, Longitud  : Integer;
begin
  Longitud := Length(CodigoEan);
 
  // Comprobar que no hay menos o más caracteres de los permitidos (8 ó 13)
  if not ((Longitud <> 8) and (Longitud <> 13)) then
  begin
    // Obtener el d&iacute;gito de control leido en un principio
    DigitoOrig := Copy(CodigoEan, Longitud, 1);
 
    // Quitar el d&iacute;gito de control que se ha obtenido en la lectura para procesar
    // el c&oacute;digo de barras y verificar su correcta lectura.
    CodigoEan := Copy(CodigoEan, 1, Longitud - 1);
 
    CheckSum := '131313131313';
 
    Digito := 0;
 
    for i := 1 to Longitud - 1 do
      Digito := Digito + (StrToInt(Copy(CodigoEan, i, 1)) * StrToInt(Copy(CheckSum, i, 1)));
 
    // Extraer el valor de la derecha.
    Digito := StrToInt(Copy(IntToStr(Digito), Length(IntToStr(Digito)),1));
 
    // Restarlo de 10 si es mayor o igual que 10.
    if Digito > 9 then
      Digito := 10 - Digito;
 
    // Comparar d&iacute;gito de control original con el obtenido y devolver un resultado.
    Result := (Digito = StrToInt(DigitoOrig));
  end
  else
    Result := False;
end;
 
 
 
Comentarios (0)
Para escribir un comentario debes estar registrado