Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-06-2011
Fossy Fossy is offline
Miembro
 
Registrado: feb 2006
Posts: 65
Poder: 19
Fossy Va por buen camino
Checksum en fbarcode (componente del ftp de clubdelphi)

Hola amigos:

He descargado el componente fbarcode del ftp de clubdelphi y todo perfecto, pero el problema que tengo es que a la hora de mandarle un valor a la propiedad Text para que genere un código de barras, si el checksum está activado lo genera pero no lo muestra pese a que tengo activado también que muestre el código en formato texto.

¿Cuál es el problema?, pues que yo almaceno en la tabla el Nº que le he mandado, por ejemplo A0000001 (Code39), y luego resulta que al leerlo con el lector el código es A0000001B, porque el checksum es "B", y si luego tengo que hacer una búsqueda exacta o filtrado de la tabla para localizarlo pues evidentemente no puedo.

El checksum debo tenerlo activado porque trabajar con Code39, como se decodifica dígito a dígito pueden aparecer errores, y el Checksum es la forma de curarse en salud.

He mirado el componente bien y no tengo forma de que me de el Checksum, o es que no lo he encontrado..., ¿hay alguna forma de saberlo?. Al saberlo almacenaría el código completo (control incluído) en la tabla y ya no tendría problemas, además de que ya me encargaría yo de imprimirlo todo en modo texto debajo del código de barras por si el usuario tiene que prescindir del escáner e introducirlo a mano.

Estoy usando Code39 y Ean13.

Es urgente amigos, esta modificación debo tenerla lista hoy.

Gracias y saludos.
Responder Con Cita
  #2  
Antiguo 21-06-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.732
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Creo que el valor del checksum siempre se pone como último caracter.
Cuando obtienes el código del lector de código de barras, podrías quitarle el último caracter y buscarlo.

También puedes crear tu el valor del checksum y guardarlo en la tabla de códigos de barra.
El componente tiene una unit para calcular esto.
Código Delphi [-]
unit bcchksum

...

function CheckSumModulo10(const data:string):string;
  var i,fak,sum : Integer;
begin
  sum := 0;
  fak := Length(data);
  for i:=1 to Length(data) do
  begin
    if (fak mod 2) = 0 then
      sum := sum + (StrToInt(data[i])*1)
    else
      sum := sum + (StrToInt(data[i])*3);
    dec(fak);
  end;
  if (sum mod 10) = 0 then
    result := data+'0'
  else
    result := data+IntToStr(10-(sum mod 10));
end;
Responder Con Cita
  #3  
Antiguo 22-06-2011
Fossy Fossy is offline
Miembro
 
Registrado: feb 2006
Posts: 65
Poder: 19
Fossy Va por buen camino
Gracias por la respuesta.

Esa función devuelve el checksum de Ean8 y Ean13, pero no es capaz de calcular el checksum de Code39 porque todo el cálculo lo hace con números, y Code39 puede llevar letras (en mi caso los códigos comienzan por A o D, que simboliza Artículo o Descuento).

Pese a que en la propiedad CheckSumMethod está activado csmModulo10, no sé dónde ni como hace el cálculo para Code39, pero tras pasarlo por el lector el checksum suele ser una letra mayúscula, luego entonces no me encaja que use esa función.

Voy a echar un vistazo al código del componente, a ver si veo algo.

Gracias y saludos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
FBarcode y Delphi6 tec Impresión 3 13-04-2010 16:40:44
ClubDelphi ??? aeff La Taberna 6 11-10-2007 12:33:13
clubdelphi.com vs clubdelphi.net anghell77 La Taberna 8 07-10-2006 22:20:11
bad checksum felixgo Firebird e Interbase 1 15-12-2004 11:46:50


La franja horaria es GMT +2. Ahora son las 02:08:39.


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
Copyright 1996-2007 Club Delphi