FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour C Struct
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: C Struct
Posted: Fri Jun 20, 2014 07:56 PM

Cristobal,

OleDefaultArg() is to OLE quite similar to what NIL is to Harbour :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: C Struct
Posted: Fri Jun 20, 2014 09:03 PM

And the function picks the right type of parameter?
I get it, so no need to take into account all the parameters of filling functions, no?

Y la funcion recoge el tipo de parámetro adecuado?
Ya entiendo, asi no hay que tener en cuenta rellenar todos los parámetros de las funciones, no?

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: C Struct
Posted: Sat Jun 21, 2014 06:09 AM

Cristobal,

I have never needed it but I guess so.

Enrico has been using it for long time so surely he may be able to complete my description :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: C Struct
Posted: Sat Jun 21, 2014 07:08 AM
Antonio, Cristobal,

Antonio Linares wrote:Cristobal,

I have never needed it but I guess so.

Enrico has been using it for long time so surely he may be able to complete my description :-)


What I know is that some OLE methods fail if OleDefaultArg() is not used for some missing parameters (not necessarily all of them).

Samples:

Code (fw): Select all Collapse
oSel:InsertFile( cTmp, OLEDEFAULTARG(), .F. )

oExcel:WorkBooks:Open( cXls, , , OLEDEFAULTARG(), , , , OLEDEFAULTARG(), , , .T., , .T. )


EMG
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: C Struct
Posted: Sat Jun 21, 2014 07:16 AM
Antonio Linares wrote:Cristobal,

I have never needed it but I guess so.

Enrico has been using it for long time so surely he may be able to complete my description :-)

I have also been using.
Regards



G. N. Rao.

Hyderabad, India
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: C Struct
Posted: Sat Jun 21, 2014 07:25 AM

Thanks Enrico, Rao

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: C Struct
Posted: Sat Jun 21, 2014 07:57 AM

Anyway the entire discussion started with using C Struct of xHarbour. May be, xHarbour's implementation has some issues.

But FWH also implements C Structures for its own use.
Please refer to struct.ch and tstruct.prg and examples in samples folder.
Using the STRUCT command for C structures for interfacing with Windows API has been working well for FWH.

My be one can use FWH's built in C Struct, instead of xHarbour's C Struct

Regards



G. N. Rao.

Hyderabad, India
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: C Struct
Posted: Sat Jun 21, 2014 08:52 AM
Rao,

nageswaragunupudi wrote:Anyway the entire discussion started with using C Struct of xHarbour. May be, xHarbour's implementation has some issues.


I need of a reduced and self-contained sample of the problem in order to try to fix it. A sample that I can build and run here. Without it I can't fix anything, sorry.

EMG
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: C Struct
Posted: Sat Jun 21, 2014 01:12 PM
Pat,

As I said at the beginning, when you are going to manage complex C structures, the best way to do it is from C language.

Its really easy, as you don't need to master the C language. With a little example you will be able to understand it and do it yourself :-)

From FWH provided source code (FWH\source\winapi\wndis.c), Just place this code at the bottom of your main PRG:

Code (fw): Select all Collapse
#pragma BEGINDUMP

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

HB_FUNC( GETVERSION ) //  --> anVersions
{
      OSVERSIONINFO vi;

      vi.dwOSVersionInfoSize = sizeof( OSVERSIONINFO );
      GetVersionEx( &vi );

      hb_reta( 5 );

      hb_storvnl( ( long ) vi.dwMajorVersion, -1, 1 );
      hb_storvnl( ( long ) vi.dwMinorVersion, -1, 2 );
      hb_storvnl( ( long ) vi.dwBuildNumber,  -1, 3 );
      hb_storvnl( ( long ) vi.dwPlatformId,   -1, 4 );
      hb_storvc( ( char * ) vi.szCSDVersion,   -1, 5 );
}

#pragma ENDDUMP
regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion