Página 1 de 1
Comando EJECT está produzindo um Chr(13)
Enviado: 16 Out 2012 10:32
por asimoes
Em alguns relatórios do meu sistema está acontecendo esse problema no final do relatório após um EJECT
logo após o EJECT vem um caracter chr(13) em seguinda. Resolvi por hora usando uma função:
Código: Selecionar todos
FUNCTION MAIN
SET CONSOLE OFF
SET DEVICE TO PRINT
SET PRINTER TO "TESTE.TXT"
SET PRINT ON
SetPrc(0,0)
@ Prow()+1,01 SAY ""
@ Prow()+2,01 SAY "TESTE"
@ Prow()+1,01 SAY "TESTE IMPRIME UM Chr(13) APOS O EJECT"
EJECT //EJECT()
SET PRINT OFF
SET PRINTER TO
SET DEVICE TO SCREEN
SET CONSOLE ON
RETURN Nil
Comando EJECT está produzindo um Chr(13)
Enviado: 16 Out 2012 11:49
por lugab
Comigo isso tb ocorre, Asimoes...
Até vou copiar sua idéia...
Comando EJECT está produzindo um Chr(13)
Enviado: 16 Out 2012 15:06
por alxsts
Olá!
Seria o caso de postar no grupo de desenvolvimento do Harbour...
Comando EJECT está produzindo um Chr(13)
Enviado: 16 Out 2012 17:41
por asimoes
Pesquisando nas pastas do harbour encontrei a função responsável pelo comando eject.
O comando eject é definido no std.ch
#command EJECT => __Eject()
E a função fica no fonte console.c na pasta rtl do harbour.
Agora é entender o que está acontecendo nesta função que imprime o caracter ♪.
Código: Selecionar todos
HB_FUNC( __EJECT ) /* Ejects the current page from the printer */
{
PHB_PRNPOS pPrnPos;
HB_FHANDLE hFile;
if( ( hFile = hb_setGetPrinterHandle( HB_SET_PRN_ANY ) ) != FS_ERROR )
{
static const char s_szEop[ 4 ] = { 0x0C, 0x0D, 0x00, 0x00 }; /* Buffer is 4 bytes to make CodeGuard happy */
hb_fsWrite( hFile, s_szEop, 2 );
}
pPrnPos = hb_prnPos();
pPrnPos->row = pPrnPos->col = 0;
}
Comando EJECT está produzindo um Chr(13)
Enviado: 16 Out 2012 18:11
por alxsts
Olá!
O EJECT ou __Eject() nada mais é que: ?? Chr(12) na impressora (é este carácter que você postou).
Essa rotina em C deveria fazer isso mas parece que está com erro. Acho que o 0x0C representa o caracter Chr(12). O estranho é o 0x0D logo a seguir (que é o Chr(13) ou ENTER)...
Experimente mudar para
Código: Selecionar todos
static const char s_szEop[ 4 ] = { 0x0C, 0x0C, 0x00, 0x00 } ou static const char s_szEop[ 4 ] = { 0x0C, 0x00, 0x00, 0x00 }
e recompilar.
Comando EJECT está produzindo um Chr(13)
Enviado: 16 Out 2012 19:03
por asimoes
alxsts,
O ideal é informar a equipe de desenvolvimento do harbour o que está acontecendo, por hora vou resolvendo com a função que eu fiz.
Obrigado pela informação.