Creando Estructuras TypeDef Struct como en C
Creando Estructuras TypeDef Struct como en C
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
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
- 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
Mariano,
Copia aquí la descripción de ese método del OCX
Copia aquí la descripción de ese método del OCX
Re: Creando Estructuras TypeDef Struct como en C
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
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
- 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
Puedes directamente hacer:
nNumeroComprobante = oFiscal:AbrirDocumento(82)
MsgInfo( nNumeroComprobante )
nNumeroComprobante = oFiscal:AbrirDocumento(82)
MsgInfo( nNumeroComprobante )
Re: Creando Estructuras TypeDef Struct como en C
Hola Antonio
El resultado de la ejecución es:
Information: NIL
Local nrespabrir
...
nrespabrir = ofiscal:abrirdocumento (82)
Msginfo (nrespabrir)
Saludos y gracias Mariano
El resultado de la ejecución es:
Information: NIL
Local nrespabrir
...
nrespabrir = ofiscal:abrirdocumento (82)
Msginfo (nrespabrir)
Saludos y gracias 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
Que versión de Harbour estás usando ?
Re: Creando Estructuras TypeDef Struct como en C
Hola Antonio las versiones que estoy usando son :
Harbour: HB32
FW16.02
Borland BCC7
Saludos Mariano
Harbour: HB32
FW16.02
Borland BCC7
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
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]
c:\harbour\bin>harbour
Harbour 3.2.0dev (r1703231115)
Copyright (c) 1999-2016, http://harbour-project.org/
Syntax: harbour <file[s][.prg]|@file> [options]
Re: Creando Estructuras TypeDef Struct como en C
Disculpa Antonio la version de Harbour es:
Harbour 3.2.0dev (r1601050904)
Copyright (c) 1999-2015, http://harbour-project.org/
Gracias y saludos,
Mariano
Harbour 3.2.0dev (r1601050904)
Copyright (c) 1999-2015, http://harbour-project.org/
Gracias y 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
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
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
- 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
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
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
Re: Creando Estructuras TypeDef Struct como en C
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
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
- 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
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
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
Re: Creando Estructuras TypeDef Struct como en C
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
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