> //Recebe uma string e codifica para o Code 128-C   
> //Utilizado pelos correios
> //Para se ler um código de Barras usando o padrão 128-C é preciso 
> primeiro passar por uma codificação
> //Para utilizar este código precisa da fonte Bcode128.ttf 
> //Este código eu peguei na página 
> http://www.fpress.com/revista/Num9905/Barras.htm que foi feito em 
> FOXPRO e converti para VB
>  
> Variáveis declaradas
> -lcCheck C(20)
> -lcRet     C(20)
> -lcStart   C(20)
> -lcStop   C(20)
> -lnl         N(10)
> -tcString C(8)
>  
> Rules
> -parm(&tcString,&lcRet);
>  
> Codigo
>  
>    &lcStart = chr(105 + 32)
>    &lcStop = chr(106 + 32)
>    &lnCheckSum = ASC(&lcStart) - 32
>  
>    &lcRet = TRIM(&tcString)
>    &lnLong = LEN(&lcRet)
>    //*--- Verifica se a string é PAR - para isso eu pego a tamanho 
da 
> string e utilizo a função MOD que me retorna 0 ou 1 
>    // "0" quer dizer que ele é par e "1" quer dizer que é impar
>    // se For impar eu completo com ZEROS A ESQUERDA
>    IF MOD(&lnLong,2) <> 0
>       &lcRet = "0" + &lcRet
>       &lnLong = LEN(&lcRet)
>    ENDIF
>  
>    //*--- Converto os caracteres para a Tabela ASCII....Pego em 
> pares... 
>    &lcCar = ""
>    FOR &lnI = 1 TO &lnLong STEP 2
>       &lcCar = &lcCar + CHR(VAL(substr(&lcRet,&lnI,2)) + 32)
>    ENDFOR
>    &lcRet = &lcCar
>    &lnLong = LEN(&lcRet)
>  
>    FOR &lnI = 1 TO &lnLong
>       &lnAsc = ASC(substr(&lcRet,&lnI,1)) - 32
>       &lnCheckSum = &lnCheckSum + (&lnAsc * &lnI)
>    ENDFOR
>    &lcCheck = CHR(MOD(&lnCheckSum,103) + 32)
>    &lcRet = &lcStart + &lcRet + &lcCheck + &lcStop
>    //*--- Este é para tirar os espaços e os caracteres inválidos
>    &lcRet = STRTRAN(&lcRet, CHR(32), CHR(232))
>    &lcRet = STRTRAN(&lcRet, CHR(127), CHR(192))
>    //*---
>


Responder a