FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Creando Estructuras TypeDef Struct como en C
Posts: 74
Joined: Mon Jun 10, 2013 01:21 PM
Creando Estructuras TypeDef Struct como en C
Posted: Thu Jun 22, 2017 04:03 PM

Estimados colegas,
Quer铆a realizar la siguiente consulta a los miembros del foro, necesito crear la siguiente estructura de datos tal cual lo harian en C..

typedef struct tagRespuestaAbrirDocumento {
long NumeroComprobante;
} RespuestaAbrirDocumento;

Soy nuevo con el manejo y la creaci贸n de estructuras y no estoy entendiendo como usarlas correctamente, le铆 bastante informaci贸n disponible del foro pero no logro la creaci贸n de la estructura y su utilizaci贸n, cualquier ayuda/comentario sera bienvenida...

La idea es usar la estructura creada para recibir las respuesta a m茅todos de un OCX.

Muchas gracias
Saludos Cordiales Mariano

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Creando Estructuras TypeDef Struct como en C
Posted: Thu Jun 22, 2017 05:40 PM

Mariano,

Copia aqu铆 la descripci贸n de ese m茅todo del OCX

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 74
Joined: Mon Jun 10, 2013 01:21 PM
Re: Creando Estructuras TypeDef Struct como en C
Posted: Fri Jun 23, 2017 12:53 PM
Estimado Antonio,
Estoy utilizando el OLE View para ver el contenido del OCX, esta es la informaci贸n del m茅todo y la estructura que necesito usar,

INFORMACION DEL OCX - OLE View
----------------------------
HasarArgentina (Hasar Argentina)
-> dispinterface _ImpresoraFiscalIRG3561
-> Methods
-------> AbrirDocumento ------> [id(0x60030422)] RespuestaAbrirDocumento AbrirDocumento([in] TiposComprobante CodigoComprobante);
...
...
...
->typedef struct RespuestaAbrirDocumento -------> typedef [uuid(142CE193-45F9-4AE0-83B8-0174CB533ADC), version(1.0)]
struct tagRespuestaAbrirDocumento { [helpstring("NumeroComprobante")]
long NumeroComprobante;
} RespuestaAbrirDocumento;

...
...
FIN OCX

Esta es la descripci贸n del metodo abrirdocumento que por lo que veo devuelve una estructura del tipo RespuestaAbrirDocumento que tiene un valar LONG con el numero del documento que fue abierto con el metodo abrirdocumento()

Ejemplo:
????? = oFiscal:AbrirDocumento(82)

Como obtener la respuesta?

Muchas gracias por tu tiempo Antonio, si necesitas alg煤n otro dato no dudes en solicitarlo..
Saludos Cordiales Mariano
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Creando Estructuras TypeDef Struct como en C
Posted: Fri Jun 23, 2017 06:15 PM

Puedes directamente hacer:

nNumeroComprobante = oFiscal:AbrirDocumento(82)

MsgInfo( nNumeroComprobante )

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 74
Joined: Mon Jun 10, 2013 01:21 PM
Re: Creando Estructuras TypeDef Struct como en C
Posted: Fri Jun 23, 2017 07:13 PM

Hola Antonio
El resultado de la ejecuci贸n es:
Information: NIL

Local nrespabrir
...
nrespabrir = ofiscal:abrirdocumento (82)
Msginfo (nrespabrir)

Saludos y gracias Mariano

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Creando Estructuras TypeDef Struct como en C
Posted: Sat Jun 24, 2017 03:30 AM

Que versi贸n de Harbour est谩s usando ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 74
Joined: Mon Jun 10, 2013 01:21 PM
Re: Creando Estructuras TypeDef Struct como en C
Posted: Sat Jun 24, 2017 07:07 PM

Hola Antonio las versiones que estoy usando son :
Harbour: HB32
FW16.02
Borland BCC7

Saludos Mariano

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Creando Estructuras TypeDef Struct como en C
Posted: Sat Jun 24, 2017 09:54 PM

Ejecuta harbour.exe y te aparece la versi贸n:

c:\harbour\bin>harbour
Harbour 3.2.0dev (r1703231115)
Copyright (c) 1999-2016, http://harbour-project.org/

Syntax: harbour <file[s][.prg]|@file> [options]

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 74
Joined: Mon Jun 10, 2013 01:21 PM
Re: Creando Estructuras TypeDef Struct como en C
Posted: Sat Jun 24, 2017 11:45 PM

Disculpa Antonio la version de Harbour es:

Harbour 3.2.0dev (r1601050904)
Copyright (c) 1999-2015, http://harbour-project.org/

Gracias y saludos,
Mariano

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Creando Estructuras TypeDef Struct como en C
Posted: Sun Jun 25, 2017 02:24 AM
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 74
Joined: Mon Jun 10, 2013 01:21 PM
Re: Creando Estructuras TypeDef Struct como en C
Posted: Sun Jun 25, 2017 05:48 PM

Hola Antonio, hice la actualizaci贸n de Harbour que me recomendaste (gracias), ahora tengo la versi贸n:

C:\hb32\bin>harbour
Harbour 3.2.0dev (r1703231115)
Copyright (c) 1999-2016, http://harbour-project.org/

Luego de hacer la siguiente prueba sigo obteniendo NIL como resultado al Msginfo de la respuesta al metodo abrirdocumento.
respabrir = oFiscal:AbrirDocumento(82)
msginfo(respabrir)

Aqui dejo un link a la pagina de descarga del Proveedor Hasar del OCX
En herramientas esta el OCX por si es de alguna utilidad:

http://grupohasar.com/index.php/product/smhpt-1000-f/

Muchas gracias, quedo atento a cualquier comentario y disponible para realizar pruebas.

Saludos Mariano

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Creando Estructuras TypeDef Struct como en C
Posted: Mon Jun 26, 2017 06:34 AM
Mariano,

Si sigue devolviendo nil entonces es que el soporte de OLE de Harbour no est谩 funcionando bien para ese m茅todo,
贸 hay alg煤n error en tu c贸digo, pero no lo parece.

Puedes reportarlo en la lista de soporte t茅cnico de Harbour:
https://groups.google.com/forum/#!forum/harbour-users
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 74
Joined: Mon Jun 10, 2013 01:21 PM
Re: Creando Estructuras TypeDef Struct como en C
Posted: Mon Jun 26, 2017 01:18 PM

Buen dia Antonio,
He creado el siguiente t贸pico en el grupo de Harbour junto con la informaci贸n y las pruebas que tengo hasta ahora.

https://groups.google.com/forum/#!topic ... Wed7dLOCzE

Saludos y muchas gracias Mariano

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Creando Estructuras TypeDef Struct como en C
Posted: Wed Jun 28, 2017 05:07 AM

Mariano,

Se han implementado una serie de cambios en el soporte de OLE en Harbour

Seria conveniente construir el Harbour m谩s reciente y probar nuevamente tu c贸digo

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 74
Joined: Mon Jun 10, 2013 01:21 PM
Re: Creando Estructuras TypeDef Struct como en C
Posted: Wed Jun 28, 2017 01:13 PM
Buen dia Antonio,

Estoy usando Harbour version,
Harbour 3.2.0dev (r1703231115)
Copyright (c) 1999-2016, http://harbour-project.org/

Tengo actualizadas las librer铆as y el compilador, necesitar铆a actualizar algo mas?

Me gustar铆a consultarte por este m茅todo en el OCX, que solicita una estructura como par谩metro y todavia no he logrado hacer funcionar, "argument error".

#include "FiveWin.ch"
#include "Struct.ch"
#include "exstruc.ch"

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

oFiscal:ImprimirTextoFiscal( AtributosDeTexto, "HOLA" ) ----> Argument error

RETU .T.

Descripcion de la funcion en el OCX

void ImprimirTextoFiscal(
[in, out] AtributosDeTexto* Atributos,
[in] BSTR Texto,
[in, optional, defaultvalue(48)] ModosDeDisplay ModoDisplay);

************************************************************************************************************************************************************

Una alternativa que estoy considerando es la de,
Tendria que usar directamente la estructura en C?

#pragma BEGINDUMP

#include <hbapi.h>
#include <windows.h>

HB_FUNC( TEST )
{
Atributosdetexto oestilo;

oestilo.Centrado:=.t..
oestilo.DobleAncho:=.F.
oestilo.BorradoTexto:=.F.
oestilo.Negrita:=.T.

// & para acceder a la direccion de la estructura
// lo que vayas a hacer con ella
}
#pragma ENDDUMP

Muchas gracias,
Saludos Mariano