#include "hbcompat.ch" #include "win32prn.ch" #define FORM_A4 9 function main () cPrinter := GetDefaultPrinter() oPrinter:=win32prn():new(cprinter) oPrinter:FormType:= FORM_A4 *oPrinter:PaperLength:= 11*25.4*10 *oPrinter:PaperWidth:=8.5*25.4*10 oPrinter:Copies:=1 oPrinter:Landscape :=.f. *oPrinter:SetPrintQuality(2) oPrinter:Create() oPrinter:LeftMargin :=oPrinter:mm_TO_PosX(1) oPrinter:TopMargin :=oPrinter:mm_TO_PosY(1) oPrinter:StartDoc(cPrinter) oPrinter:NewLine() c_num := {} AADD( c_num, "149121" ) AADD( c_num, "4849505152" ) AADD( c_num, "49121" ) AADD( c_num, "1149121" ) AADD( c_num, "21491210" ) AADD( c_num, "91491212" ) AADD( c_num, "913591929312" ) AADD( c_num, "90919293949596979899" ) FOR n_Conta = 1 TO LEN( c_num ) * A linha abaixo verifica se o número de caracteres é par. Caso não seja corrige, acrescentando um ZERO. c_Nume := ALLTRIM( c_num[n_Conta] ) c_numero := IIF( LEN( c_nume ) / 2 <> INT( LEN( c_nume ) / 2 ), "0" + c_nume, c_nume ) c_num25 := "" ? c_num[n_Conta] FOR nn = 1 TO LEN( c_numero ) step 2 nn1 := VAL( SUBS( c_numero, nn, 02 )) c_num25 := c_num25 + CHR( nn1 + IIF( nn1 <= 49, 48, 00 ) + IIF( nn1 >= 50, 142, 00 ) ) NEXT nn oPrinter:TextAtFont(0100, 250 + n_Conta * 300, strzero(n_Conta,3) + " -> Variavel c_num25: "+c_num25, 'Courier Regular',08, 12 ) oPrinter:TextAtFont(0100, 350 + n_Conta * 300,"Variavel c_numero: "+c_numero, 'Courier Regular',08, 12 ) oPrinter:TextAtFont(2500, 350 + n_Conta * 300,"("+c_num25+")", 'I2OF5TXT', 20, 5 ) NEXT n_Conta oPrinter:EndDoc() oPrinter:Destroy() return nil