Creando Estructuras TypeDef Struct como en C
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Creando Estructuras TypeDef Struct como en C
oFiscal:ImprimirTextoFiscal( AtributosDeTexto:cBuffer, "HOLA" )
Re: Creando Estructuras TypeDef Struct como en C
Hola Antonio,
Function Main()
Local Atributosdetexto
STRUCT AtributosDeTexto
MEMBER Centrado AS BOOL INIT .F.
MEMBER DobleAncho AS BOOL INIT .F.
MEMBER BorradoTexto AS BOOL INIT .F.
MEMBER Negrita AS BOOL INIT .T.
ENDSTRUCT
xbrowse(AtributosDeTexto) ----->muesta bien la estructura con sus miembros y los valor en .T. y .F.
msginfo( AtributosDeTexto:cBuffer) -----> esto muestra " " vacio, es correcto?
oFiscal:ImprimirTextoFiscal( AtributosDeTexto:cBuffer, "HOLA" ) ----> argument error
Gracias Antonio,
Function Main()
Local Atributosdetexto
STRUCT AtributosDeTexto
MEMBER Centrado AS BOOL INIT .F.
MEMBER DobleAncho AS BOOL INIT .F.
MEMBER BorradoTexto AS BOOL INIT .F.
MEMBER Negrita AS BOOL INIT .T.
ENDSTRUCT
xbrowse(AtributosDeTexto) ----->muesta bien la estructura con sus miembros y los valor en .T. y .F.
msginfo( AtributosDeTexto:cBuffer) -----> esto muestra " " vacio, es correcto?
oFiscal:ImprimirTextoFiscal( AtributosDeTexto:cBuffer, "HOLA" ) ----> argument error
Gracias Antonio,
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Creando Estructuras TypeDef Struct como en C
Prueba asi:
local cBuffer := AtributosDeTexto:cBuffer
oFiscal:ImprimirTextoFiscal( @cBuffer, "HOLA" )
local cBuffer := AtributosDeTexto:cBuffer
oFiscal:ImprimirTextoFiscal( @cBuffer, "HOLA" )
Re: Creando Estructuras TypeDef Struct como en C
Buen dia Antonio,
Realice la prueba que me indicaste sin exito, este es el resultado,
STRUCT AtributosDeTexto
MEMBER Centrado AS BOOL INIT .F.
MEMBER DobleAncho AS BOOL INIT .F.
MEMBER BorradoTexto AS BOOL INIT .F.
MEMBER Negrita AS BOOL INIT .T.
ENDSTRUCT
memstat(atributosdetexto:cbuffer)
Resultado:
***************
Memory(0) ............. 2097151
Memory(1) ............. 2097151
Memory(2) ............. 2097151
Memory(3) ............. 2005532
Memory(4) ............. 0
Memory(5) ............. 0
Memory(6) ............. 0
***************
cBuffer = atributosdetexto:cbuffer
oFiscal:ImprimirTextoFiscal( @cBuffer, "HOLA" ) ------> argument error
Saludos Mariano
Realice la prueba que me indicaste sin exito, este es el resultado,
STRUCT AtributosDeTexto
MEMBER Centrado AS BOOL INIT .F.
MEMBER DobleAncho AS BOOL INIT .F.
MEMBER BorradoTexto AS BOOL INIT .F.
MEMBER Negrita AS BOOL INIT .T.
ENDSTRUCT
memstat(atributosdetexto:cbuffer)
Resultado:
***************
Memory(0) ............. 2097151
Memory(1) ............. 2097151
Memory(2) ............. 2097151
Memory(3) ............. 2005532
Memory(4) ............. 0
Memory(5) ............. 0
Memory(6) ............. 0
***************
cBuffer = atributosdetexto:cbuffer
oFiscal:ImprimirTextoFiscal( @cBuffer, "HOLA" ) ------> argument error
Saludos Mariano
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Creando Estructuras TypeDef Struct como en C
Prueba a hacer esto:
pMem = hb_xgrab( 32 )
oFiscal:ImprimirTextoFiscal( pMem, "HOLA" )
y comprueba si sigue dando el argument error
#pragma BEGINDUMP
#include <hbapi.h>
HB_FUNC( HB_XGRAB )
{
hb_retnll( ( HB_LONGLONG ) hb_xgrab( hb_parnl( 1 ) ) );
}
#pragma ENDDUMP
pMem = hb_xgrab( 32 )
oFiscal:ImprimirTextoFiscal( pMem, "HOLA" )
y comprueba si sigue dando el argument error
#pragma BEGINDUMP
#include <hbapi.h>
HB_FUNC( HB_XGRAB )
{
hb_retnll( ( HB_LONGLONG ) hb_xgrab( hb_parnl( 1 ) ) );
}
#pragma ENDDUMP
Re: Creando Estructuras TypeDef Struct como en C
Hola Antonio,
Este es el resultado de la ejecución del código que me enviaste,
Compiler version: Harbour 3.2.0dev (r1703231115)
FiveWin Version: FWH 16.02
Windows version: 6.2, Build 9200
Time from start: 0 hours 0 mins 2 secs
Error occurred at: 02/07/17, 19:21:53
Error description: (DOS Error -2147352571) WINOLE/1007 Argument error: IMPRIMIRTEXTOFISCAL
Args:
[ 1] = N 13958972
[ 2] = C HOLA
Stack Calls
===========
Called from: => TOLEAUTO:IMPRIMIRTEXTOFISCAL( 0 )
Called from: hasarg2.prg => MAIN( 98 )
Windows total applications running: 4
1 ,
2 , C:\WINDOWS\SYSTEM32\MSVBVM60.DLL
3 , C:\WINFAR64\hasarg2.exe
4 GDI+ Window, C:\WINDOWS\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.14393.953_none_baad48403594ab3
Variables in use
================
Procedure Type Value
==========================
TOLEAUTO:IMPRIMIRTEXTOFISCAL
Param 1: O Class: ERROR
MAIN
Param 1: N 13958972
Param 2: C "HOLA"
Local 1: U
Local 2: U
Linked RDDs
===========
DBF
DBFFPT
DBFBLOB
DBFNTX
DataBases in use
================
Classes in use:
===============
1 ERROR
2 HBCLASS
3 HBOBJECT
4 TSTRUCT
5 WIN_OLEAUTO
6 TOLEAUTO
7 TREG32
Muchas gracias Mariano
Este es el resultado de la ejecución del código que me enviaste,
Compiler version: Harbour 3.2.0dev (r1703231115)
FiveWin Version: FWH 16.02
Windows version: 6.2, Build 9200
Time from start: 0 hours 0 mins 2 secs
Error occurred at: 02/07/17, 19:21:53
Error description: (DOS Error -2147352571) WINOLE/1007 Argument error: IMPRIMIRTEXTOFISCAL
Args:
[ 1] = N 13958972
[ 2] = C HOLA
Stack Calls
===========
Called from: => TOLEAUTO:IMPRIMIRTEXTOFISCAL( 0 )
Called from: hasarg2.prg => MAIN( 98 )
Windows total applications running: 4
1 ,
2 , C:\WINDOWS\SYSTEM32\MSVBVM60.DLL
3 , C:\WINFAR64\hasarg2.exe
4 GDI+ Window, C:\WINDOWS\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.14393.953_none_baad48403594ab3
Variables in use
================
Procedure Type Value
==========================
TOLEAUTO:IMPRIMIRTEXTOFISCAL
Param 1: O Class: ERROR
MAIN
Param 1: N 13958972
Param 2: C "HOLA"
Local 1: U
Local 2: U
Linked RDDs
===========
DBF
DBFFPT
DBFBLOB
DBFNTX
DataBases in use
================
Classes in use:
===============
1 ERROR
2 HBCLASS
3 HBOBJECT
4 TSTRUCT
5 WIN_OLEAUTO
6 TOLEAUTO
7 TREG32
Muchas gracias Mariano
Re: Creando Estructuras TypeDef Struct como en C
Estimados,
Por ahora voy a utilizar la DLL que provee HASAR que funciona, por si alguien necesita salir del apuro, es un poco mas artesanal ya que trabaja directamente con tramas en modo empaquetado. El OCX es mas practico pero por el momento hay varias cosas que no funcionaron.
un ejemplo usando la DLL
*-------------------------------------------------------------*
Function AbrirPuerto(nPort)
*-------------------------------------------------------------*
local lResp:=.T.
nHandler := CallDll32( "OpenComFiscal" , "WINFIS32.DLL" , nPort , 1 )
If nHandler >= 0
msgalert("Puerto de impresora OK ")
nError := CallDll32( "InitFiscal" , "WINFIS32.DLL" , nHandler )
If nError = 0
lResp := .T.
Else
msginfo(" La impresora no se puede Inicializar" + cValtoChar(nError))
lResp := .F.
Endif
Else
Msinfo( nHandler )
lResp := .F.
Endif
RETU ( lResp )
*-------------------------------------------------------------*
FUNCTION CierreFiscal(cTpo)
*-------------------------------------------------------------*
Local s ,lResp:=.T.
local cFecha := DtoC( Date() )
s:=if( cTpo='Z',"9" + SE + "Z","9" + SE + "X")
If MsgYesno( '¿ Realizar Cierre '+cTpo+' ? ' + ChR(10)+ ;
' Fecha : ' + cFecha , " Mensaje de atención ")
nError := CallDll32 ( "MandaPaqueteFiscal" , "WINFIS32.DLL" , nHandler , s )
If nError == 0
msginfo( "Se Realizo el cierre "+cTpo, "Informacion" )
Else
lResp:=.F.
msgalert( "Error al efectuar el cierre "+cTpo , " ERROR" )
endif
Endif
RETU lResp
Gracias por la colaboración, y espero pueda sacarlos del paso.
Atte Mariano
Por ahora voy a utilizar la DLL que provee HASAR que funciona, por si alguien necesita salir del apuro, es un poco mas artesanal ya que trabaja directamente con tramas en modo empaquetado. El OCX es mas practico pero por el momento hay varias cosas que no funcionaron.
un ejemplo usando la DLL
*-------------------------------------------------------------*
Function AbrirPuerto(nPort)
*-------------------------------------------------------------*
local lResp:=.T.
nHandler := CallDll32( "OpenComFiscal" , "WINFIS32.DLL" , nPort , 1 )
If nHandler >= 0
msgalert("Puerto de impresora OK ")
nError := CallDll32( "InitFiscal" , "WINFIS32.DLL" , nHandler )
If nError = 0
lResp := .T.
Else
msginfo(" La impresora no se puede Inicializar" + cValtoChar(nError))
lResp := .F.
Endif
Else
Msinfo( nHandler )
lResp := .F.
Endif
RETU ( lResp )
*-------------------------------------------------------------*
FUNCTION CierreFiscal(cTpo)
*-------------------------------------------------------------*
Local s ,lResp:=.T.
local cFecha := DtoC( Date() )
s:=if( cTpo='Z',"9" + SE + "Z","9" + SE + "X")
If MsgYesno( '¿ Realizar Cierre '+cTpo+' ? ' + ChR(10)+ ;
' Fecha : ' + cFecha , " Mensaje de atención ")
nError := CallDll32 ( "MandaPaqueteFiscal" , "WINFIS32.DLL" , nHandler , s )
If nError == 0
msginfo( "Se Realizo el cierre "+cTpo, "Informacion" )
Else
lResp:=.F.
msgalert( "Error al efectuar el cierre "+cTpo , " ERROR" )
endif
Endif
RETU lResp
Gracias por la colaboración, y espero pueda sacarlos del paso.
Atte Mariano
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Creando Estructuras TypeDef Struct como en C
muy bien
gracias por compartirlo
gracias por compartirlo