Page 2 of 2

Re: C Struct

Posted: Fri Jun 20, 2014 7:56 pm
by Antonio Linares
Cristobal,

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

Re: C Struct

Posted: Fri Jun 20, 2014 9:03 pm
by cnavarro
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?

Re: C Struct

Posted: Sat Jun 21, 2014 6:09 am
by Antonio Linares
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 :-)

Re: C Struct

Posted: Sat Jun 21, 2014 7:08 am
by Enrico Maria Giordano
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: Select all | Expand

oSel:InsertFile( cTmp, OLEDEFAULTARG(), .F. )

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


EMG

Re: C Struct

Posted: Sat Jun 21, 2014 7:16 am
by nageswaragunupudi
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.

Re: C Struct

Posted: Sat Jun 21, 2014 7:25 am
by cnavarro
Thanks Enrico, Rao

Re: C Struct

Posted: Sat Jun 21, 2014 7:57 am
by nageswaragunupudi
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

Re: C Struct

Posted: Sat Jun 21, 2014 8:52 am
by Enrico Maria Giordano
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

Re: C Struct

Posted: Sat Jun 21, 2014 1:12 pm
by Antonio Linares
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: Select all | Expand

#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