Page 1 of 1

Create GUID from Harbour

PostPosted: Fri Jan 31, 2014 6:56 pm
by don lowenstein
Does anyone know how to create a GUID from Harbour?

Re: Create GUID from Harbour

PostPosted: Fri Jan 31, 2014 8:59 pm
by Enrico Maria Giordano
Don,

don lowenstein wrote:Does anyone know how to create a GUID from Harbour?


Code: Select all  Expand view
#include "Fivewin.ch"


FUNCTION MAIN()

    ? CREATEOBJECT( "Scriptlet.TypeLib" ):Guid

    RETURN NIL


EMG

Re: Create GUID from Harbour

PostPosted: Sat Feb 01, 2014 1:42 am
by carlos vargas
Code: Select all  Expand view

FUNCTION CreateGuID32( lNoBracket )
   LOCAL cGuID := NewGuid()

   DEFAULT lNoBracket := .F.

   IF lNoBracket
      cGuid := CharRem ("{", cGuid )
      cGuid := CharRem ("}", cGuid )
   ENDIF

RETURN ( cGuID )

/*-------------------------------------------------------------------------------------------------*/

FUNCTION CreateGuID16( lNoBracket )
   LOCAL nCnt := 1, nID := 0, cID := ""
   LOCAL cGuID := ""

   DEFAULT lNoBracket := .F.

   cID := NewGuid16()

   FOR nCnt := 1 TO Len( cID )
      nID   := SubStr( cID, nCnt, 1 )
      cGuID := cGuID + DecToHex( nID )
   NEXT

   cGuid := CharRem ( "h", cGuid )
   cGuid := PosIns( cGuid, "-", 09 )
   cGuid := PosIns( cGuid, "-", 14 )
   cGuid := PosIns( cGuid, "-", 19 )
   cGuid := PosIns( cGuid, "-", 24 )

   IF !lNoBracket
      cGuid := "{" + cGuid + "}"
   ENDIF

RETURN ( cGuID )

#pragma BEGINDUMP

/*llamada a encabezados de api de xharbour y windows SDK*/
#include "hbapi.h"
#include "hbapiitm.h"
#include "hbapierr.h"

#include "shlobj.h"
#include "windows.h"

/*funcion wrapper para obtener una cadena GUID de 16 bits*/
HB_FUNC( NEWGUID16 )
{
   GUID mguid;

   if( !CoCreateGuid(&mguid) )
   {
      memset( ( LPVOID ) &mguid,'?',sizeof( mguid ));
   }

   hb_retclen( (char *) &mguid,sizeof( mguid ) );
}

/*-------------------------------------------------------------------------------------------------*/
/*funcion wrapper para obtener una cadena GUID de 32 bits*/
HB_FUNC( NEWGUID )
{
   GUID guid;
   char obuff[38];
   memset( obuff, 0x0, 38 );

   if( CoCreateGuid( &guid ) )
   {
      OLECHAR tmpbuff[ 76 ];

      StringFromGUID2( &guid, tmpbuff, 76 );
      WideCharToMultiByte( CP_OEMCP, 0, tmpbuff, -1, obuff, 38, NULL, NULL );
   }

   hb_retclen( obuff, 38 );
}
#pragma ENDDUMP

 

Re: Create GUID from Harbour

PostPosted: Wed Jun 21, 2017 4:55 pm
by manuelcalerosolis
Carlos,

Intento usar su función de generación de GUID de 32 bits pero me devuelve una cadena vacía.

Alguna idea?

Saludos.

Re: Create GUID from Harbour

PostPosted: Wed Jun 21, 2017 5:27 pm
by rhlawek
In the hbwin contrib library harbour has the function win_uuidcreatestring()

Re: Create GUID from Harbour

PostPosted: Thu Jun 22, 2017 8:12 am
by manuelcalerosolis
Rhlawek thanks.