Creando Estructuras TypeDef Struct como en C

User avatar
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

Post by Antonio Linares »

oFiscal:ImprimirTextoFiscal( AtributosDeTexto:cBuffer, "HOLA" )
regards, saludos

Antonio Linares
www.fivetechsoft.com
mterraz
Posts: 41
Joined: Mon Jun 10, 2013 1:21 pm

Re: Creando Estructuras TypeDef Struct como en C

Post by mterraz »

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,
User avatar
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

Post by Antonio Linares »

Prueba asi:

local cBuffer := AtributosDeTexto:cBuffer

oFiscal:ImprimirTextoFiscal( @cBuffer, "HOLA" )
regards, saludos

Antonio Linares
www.fivetechsoft.com
mterraz
Posts: 41
Joined: Mon Jun 10, 2013 1:21 pm

Re: Creando Estructuras TypeDef Struct como en C

Post by mterraz »

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
User avatar
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

Post by Antonio Linares »

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
regards, saludos

Antonio Linares
www.fivetechsoft.com
mterraz
Posts: 41
Joined: Mon Jun 10, 2013 1:21 pm

Re: Creando Estructuras TypeDef Struct como en C

Post by mterraz »

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
mterraz
Posts: 41
Joined: Mon Jun 10, 2013 1:21 pm

Re: Creando Estructuras TypeDef Struct como en C

Post by mterraz »

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
User avatar
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

Post by Antonio Linares »

muy bien :-)

gracias por compartirlo
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply