Creando Estructuras TypeDef Struct como en C

Re: Creando Estructuras TypeDef Struct como en C

Postby Antonio Linares » Wed Jun 28, 2017 2:09 pm

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

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42079
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Creando Estructuras TypeDef Struct como en C

Postby mterraz » Wed Jun 28, 2017 3:06 pm

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

Re: Creando Estructuras TypeDef Struct como en C

Postby Antonio Linares » Thu Jun 29, 2017 3:40 am

Prueba asi:

local cBuffer := AtributosDeTexto:cBuffer

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

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42079
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Creando Estructuras TypeDef Struct como en C

Postby mterraz » Fri Jun 30, 2017 3:03 pm

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

Re: Creando Estructuras TypeDef Struct como en C

Postby Antonio Linares » Fri Jun 30, 2017 5:09 pm

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
User avatar
Antonio Linares
Site Admin
 
Posts: 42079
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Creando Estructuras TypeDef Struct como en C

Postby mterraz » Sun Jul 02, 2017 10:26 pm

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

Re: Creando Estructuras TypeDef Struct como en C

Postby mterraz » Tue Jul 11, 2017 10:46 pm

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

Re: Creando Estructuras TypeDef Struct como en C

Postby Antonio Linares » Wed Jul 12, 2017 5:49 am

muy bien :-)

gracias por compartirlo
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42079
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Previous

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Willi Quintana and 42 guests