Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cod.Barras no corresponde al numero q realmente es. Al pasarlo por el scaner lee otro (https://www.clubdelphi.com/foros/showthread.php?t=40278)

Wonni 12-02-2007 14:53:06

Cod.Barras no corresponde al numero q realmente es. Al pasarlo por el scaner lee otro
 
Otro problemilla con los codigos de barras:

Genero codigos de barra Ean13 e imprimo con una BZB 2. Todo funciona bien, pero hay algun que otro (muy pocos) codigo que el numero es por ejemplo:

8400000001121 y al pasar la etiqueta por el lector me lee 8400000001120


El codigo de barras lo genero con este codigo:

Código Delphi [-]
Function MakeEan13(Cadena:String):String;

 Var
   SumaImp, Sumapar, SumaTotal, DC:Integer;

Begin


 If Length(Cadena)<10 Then
  Repeat
    Cadena:='0'+Cadena;
  Until
    Length(Cadena)=10;

 Cadena:='84'+Cadena;

 // SUMAR POSICIONES IMPARES


 SumaImp:=StrToInt(Cadena[1])+StrToInt(Cadena[3])+StrToInt(Cadena[5])+
          StrToInt(Cadena[7])+StrToInt(Cadena[9])+StrToInt(Cadena[11]);

  SumaPar:=StrToInt(Cadena[2])+StrToInt(Cadena[4])+StrToInt(Cadena[6])+
          StrToInt(Cadena[8])+StrToInt(Cadena[10])+StrToInt(Cadena[12]);

 SumaPar:=SumaPar*3;

 SumaTotal:=SumaPar+SumaImp;

 DC:=10-StrToInt(IntToStr(SumaTotal)[Length(IntToStr(SumaTotal))]);


 If DC>0 Then
 Begin
 Result:=Cadena+IntToStr(DC);
 End Else
  Begin
   Result:=Cadena+'0';
  End;

End;


La forma de calcularlo lo saque de esta pagina:

http://www.argcon.net/normalizacion/norma10.htm

El componente que utilizo para los codigos de barraes este:

http://www.psoft.sk/


El scaner es un Metrologic Voyager MS9520

Onti 12-02-2007 15:46:06

Si tienes los componentes de Psoft, para que utilizas otro componente para generar código de barra?

Wonni 13-02-2007 11:32:17

Resulta que antes de tener que crear las etiquetas, yo creaba un codigo de barras ean13 "correcto" a partir del codigo auntoincrementable del articulo con la función que he indicado. Despues llego el tema de imprimirlos y opté por los componentes de Psoft. Pero se me pasó por alto una propiedad de estos componentes llamada AutoCheckDigit.

Lo que veo es que el digito de control no lo calcula igual que con la funcion, porque si no, no hubiese habido problema. Pero claro, ahora, al crear el articulo ya no calculo yo el digito de control lo hago con el componente de Psoft, ya que asi todo el proceso sera el mismo y no debe dar fallos.

En fin, que deberia haberme estudiado bien el componente. Las prisas :o porque me dijeron: "no, hasta la proxima temporada no imprimiremos etiquetas". Y 4 dias antes de tener que dar de alta entonces cambiaron de opinion. Ala, a correr !!

Gracias Onti :)

Onti 13-02-2007 15:01:31

a correr :)


La franja horaria es GMT +2. Ahora son las 14:36:18.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi