Dos funciones que se expusieron el el Foro de la Comunidad VFP en Español. La primera mediante API y la segunda mediante WSH. La función con la API de Windows es 3 veces mas rápida que la que utiliza WSH.
Con API
? GenerateGUID()
FUNCTION GenerateGUID()
*-- Con la API de Windows
LOCAL lcRetval, lcStruc_GUID, lcGUID, lnSize
DECLARE INTEGER CoCreateGuid IN "ole32.dll" STRING @lcGUIDStruc
DECLARE INTEGER StringFromGUID2 IN "ole32.dll" STRING cGUIDStruc, STRING @cGUID, LONG nSize
lcStruc_GUID = REPLICATE(" ",16)
lcGUID = REPLICATE(" ",80)
lnSize = LEN(lcGUID) / 2
IF CoCreateGuid(@lcStruc_GUID) <> 0
RETURN ""
ENDIF
IF StringFromGUID2(lcStruc_GUID,@lcGuid,lnSize) = 0
RETURN ""
ENDIF
RETURN STREXTR(STRCONV(lcGUID,6),"{","}") && >= VFP7
*RETURN SUBSTR(STRCONV(lcGUID,6),2,36) && < VFP7
ENDFUNC
Con WSH
? GenerateGUID()
FUNCTION GenerateGUID
*-- Con WSH (Windows Script Host)
LOCAL loObj
loObj = CREATEOBJECT("Scriptlet.TypeLib")
RETURN STREXTRACT(loObj.GUID, "{", "}") && >= VFP7
*RETURN SUBSTR(loObj.GUID,2,36) && < VFP7
ENDFUNC
No hay comentarios. :
Publicar un comentario
Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.