Creando Estructuras TypeDef Struct como en C

Creando Estructuras TypeDef Struct como en C

Postby mterraz » Thu Jun 22, 2017 4: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
mterraz
 
Posts: 48
Joined: Mon Jun 10, 2013 1:21 pm

Re: Creando Estructuras TypeDef Struct como en C

Postby Antonio Linares » Thu Jun 22, 2017 5:40 pm

Mariano,

Copia aquí la descripción de ese método del OCX
regards, saludos

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

Re: Creando Estructuras TypeDef Struct como en C

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

Re: Creando Estructuras TypeDef Struct como en C

Postby Antonio Linares » Fri Jun 23, 2017 6:15 pm

Puedes directamente hacer:

nNumeroComprobante = oFiscal:AbrirDocumento(82)

MsgInfo( nNumeroComprobante )
regards, saludos

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

Re: Creando Estructuras TypeDef Struct como en C

Postby mterraz » Fri Jun 23, 2017 7: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
mterraz
 
Posts: 48
Joined: Mon Jun 10, 2013 1:21 pm

Re: Creando Estructuras TypeDef Struct como en C

Postby Antonio Linares » Sat Jun 24, 2017 3:30 am

Que versión de Harbour estás usando ?
regards, saludos

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

Re: Creando Estructuras TypeDef Struct como en C

Postby mterraz » Sat Jun 24, 2017 7:07 pm

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

Saludos Mariano
mterraz
 
Posts: 48
Joined: Mon Jun 10, 2013 1:21 pm

Re: Creando Estructuras TypeDef Struct como en C

Postby Antonio Linares » Sat Jun 24, 2017 9: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
User avatar
Antonio Linares
Site Admin
 
Posts: 41288
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Creando Estructuras TypeDef Struct como en C

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

Re: Creando Estructuras TypeDef Struct como en C

Postby Antonio Linares » Sun Jun 25, 2017 2:24 am

regards, saludos

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

Re: Creando Estructuras TypeDef Struct como en C

Postby mterraz » Sun Jun 25, 2017 5: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
mterraz
 
Posts: 48
Joined: Mon Jun 10, 2013 1:21 pm

Re: Creando Estructuras TypeDef Struct como en C

Postby Antonio Linares » Mon Jun 26, 2017 6: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
User avatar
Antonio Linares
Site Admin
 
Posts: 41288
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Creando Estructuras TypeDef Struct como en C

Postby mterraz » Mon Jun 26, 2017 1: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
mterraz
 
Posts: 48
Joined: Mon Jun 10, 2013 1:21 pm

Re: Creando Estructuras TypeDef Struct como en C

Postby Antonio Linares » Wed Jun 28, 2017 5: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
User avatar
Antonio Linares
Site Admin
 
Posts: 41288
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Creando Estructuras TypeDef Struct como en C

Postby mterraz » Wed Jun 28, 2017 1: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
mterraz
 
Posts: 48
Joined: Mon Jun 10, 2013 1:21 pm

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 10 guests