Falha na Impressão de barras code 128
Enviado: 17 Set 2010 13:47
Olá a todos,
Será que alguem poderia me ajudar.
Tenho impresso os codigo de barras com essa rotina, porém a na formação de determinadas composições de números, as barras saem com falhas.
Será que alguem poderia dar uma olhada nessa rotina ?
Obrigado.
Poka
Será que alguem poderia me ajudar.
Tenho impresso os codigo de barras com essa rotina, porém a na formação de determinadas composições de números, as barras saem com falhas.
Será que alguem poderia dar uma olhada nessa rotina ?
Código: Selecionar todos
func barra128(xnum)
local x
// se xnum =35100948709125000111550000000001901265449997
// ou = 35100948709125000111550000000001991521927533
// da erro.
lcChaine:=xnum
code128 = ""
tableB = .T.
lni = 1 // lni devient l'index sur la chaine
DO WHILE lni <= LEN(lcChaine)
IF lni = 1
//code128 = CHR(204) && Débuter sur table B
code128 = CHR(210) && Débuter sur table B
ENDIF
// On est sur la table C, essayer de traiter 2 chiffres
minlni = 2
// DO testnum
// IF minlni < 0 && OK pour 2 chiffres, les traiter
dummy = Val(SUBSTR(lcChaine, lni, 2))
dummy = IIF(dummy < 95, dummy + 32, dummy + 100)
code128 = code128+CHR(dummy)
lni = lni + 2
ENDDO
// Calcul de la clé de contrôle
FOR lni = 1 TO LEN(code128)
dummy = ASC(SUBSTR(code128, lni, 1))
dummy = IIF(dummy < 127, dummy - 32, dummy - 100)
IF lni = 1
CheckSum = dummy
ELSE
CheckSum = MOD((CheckSum + (lni - 1) * dummy),103)
ENDIF
next
// Calcul du code ASCII de la clé
CheckSum = IIF(CheckSum < 95, CheckSum + 32, CheckSum + 100)
// Ajout de la clé et du STOP
code128 = code128+CHR(CheckSum)+CHR(211)
w_code128 = code128
RETURN (w_code128)Poka