• Sábado 14 de Diciembre de 2024, 14:50

Autor Tema:  Hay Alguna Manera De Agregar Codigo De Barras?  (Leído 1371 veces)

Drache

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Hay Alguna Manera De Agregar Codigo De Barras?
« en: Domingo 6 de Abril de 2008, 02:16 »
0
Hola,

La idea es agregar codigos de barras a un reporte, el cual pueda imprimirse y posteriormente escanearse, ya hay paginas de internet y programillas que generan este codigo, entonces una solucion, es imprimir un formulario desde builder, y despues imprimir por separado el codigo de barras y pegarsela a la hoja... algo asi... entonces quisiera saber si desde builder puedo generar este codigo de barras... gracias un saludo

ivanotalvaro

  • Nuevo Miembro
  • *
  • Mensajes: 24
    • Ver Perfil
Re: Hay Alguna Manera De Agregar Codigo De Barras?
« Respuesta #1 en: Viernes 25 de Abril de 2008, 17:33 »
0
revisa el siguiente  enlace te puede ayudar con lo que necesitas.

h**p://www.koders.com/cpp/fid48097863045A0A791D7A48CE908B5AC4D90AFA28.aspx?s=barcode#L45

h**p://www.koders.com/cpp/fidF5A599CBF2FEA72282997DA80D786AD2BECEB3AA.aspx?s=barcode.h#L2

Otra opción es la siguiente: (el código lo debes convertir a c++), y la cadena retornada colocarla en un Tlabel, o TEdit y que tenga una fuente BARCODE 128 que las puedes encontrar en la web.

STRING    ls_start, ls_stop, ls_ret, ls_check, ls_car
INTEGER   li_long, li_cont, li_checksum, li_ASC, li_pos
BOOLEAN   lb_found

//Caracter de inicio
ls_start = Char(105 + 32)
//Caracter de parada
ls_stop = Char(106 + 32)

li_checksum = ASC(ls_start) - 32
ls_ret = TRIM(as_data2convert)
li_long = LEN(ls_ret)

//Asegurar que la longitud de la cadena siempre sea par
IF MOD(li_long,2) <> 0 THEN
   ls_ret = "0" + ls_ret
   li_long = LEN(ls_ret)
END IF

//Convierto los pares a caracteres
ls_car = ""
FOR li_cont = 1 TO li_long STEP 2
   ls_car = ls_car + Char(Integer(Mid(ls_ret,li_cont,2)) + 32)
NEXT
ls_ret = ls_car
li_long = LEN(ls_ret)

//Suma de productos para hallar el caracter de control
FOR li_cont = 1 TO li_long
   li_ASC = ASC(Mid(ls_ret,li_cont,1)) - 32
   li_checksum = li_checksum + (li_ASC * li_cont)
NEXT
ls_check = Char(MOD(li_checksum,103) + 32)
//Se obtiene la nueva cadena de caracteres ASCII
ls_ret = ls_start + ls_ret + ls_check + ls_stop

//En la conversión a caracteres ASCII se debe contemplar algunos
//caracteres especiales. Se deben reemplazar por caracteres validos
li_long = LEN(ls_ret)
li_cont = 1
lb_found = TRUE
DO WHILE lb_found
   //Cambiar el Char(32) por Char(232)
   li_pos = Pos( ls_ret, Char(32), li_cont )
   IF li_pos > 0 THEN
      ls_ret = Replace ( ls_ret, li_pos, 1, Char(232) )
      li_cont = li_pos
   ELSE
      lb_found = FALSE
   END IF
LOOP

li_long = LEN(ls_ret)
li_cont = 1
lb_found = TRUE
DO WHILE lb_found
   //Cambiar el Char(127) por Char(192)
   li_pos = Pos( ls_ret, Char(127), li_cont )
   IF li_pos > 0 THEN
      ls_ret = Replace ( ls_ret, li_pos, 1, Char(192) )
      li_cont = li_pos
   ELSE
      lb_found = FALSE
   END IF
LOOP

li_long = LEN(ls_ret)
li_cont = 1
lb_found = TRUE

DO WHILE lb_found
   //Cambiar el Char(128) por Char(193)
   li_pos = Pos( ls_ret, Char(128), li_cont )
   IF li_pos > 0 THEN
      ls_ret = Replace ( ls_ret, li_pos, 1, Char(193) )
      li_cont = li_pos
   ELSE
      lb_found = FALSE
   END IF
LOOP

RETURN ls_ret