FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Create GUID from Harbour
Posts: 204
Joined: Mon Oct 17, 2005 09:09 PM

Create GUID from Harbour

Posted: Fri Jan 31, 2014 06:56 PM

Does anyone know how to create a GUID from Harbour?

Don Lowenstein
www.laapc.com
Posts: 9022
Joined: Thu Oct 06, 2005 08:17 PM

Re: Create GUID from Harbour

Posted: Fri Jan 31, 2014 08:59 PM
Don,

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


Code (fw): Select all Collapse
#include "Fivewin.ch"


FUNCTION MAIN()

    ? CREATEOBJECT( "Scriptlet.TypeLib" ):Guid

    RETURN NIL


EMG
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM

Re: Create GUID from Harbour

Posted: Sat Feb 01, 2014 01:42 AM
Code (fw): Select all Collapse
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
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 149
Joined: Mon Oct 10, 2005 09:30 AM

Re: Create GUID from Harbour

Posted: Wed Jun 21, 2017 04:55 PM

Carlos,

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

Alguna idea?

Saludos.

Posts: 195
Joined: Sun Jul 22, 2012 07:01 PM

Re: Create GUID from Harbour

Posted: Wed Jun 21, 2017 05:27 PM

In the hbwin contrib library harbour has the function win_uuidcreatestring()

Posts: 149
Joined: Mon Oct 10, 2005 09:30 AM

Re: Create GUID from Harbour

Posted: Thu Jun 22, 2017 08:12 AM

Rhlawek thanks.

Continue the discussion