vbAccelerator - Contents of code file: GUIDGenerator5.cls
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
END
Attribute VB_Name = "GUIDGenerator"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True
'Author: Dion Wiggins
'Purpose: A simple component that generates a unique GUID value.
' A GUID is a 16-byte field used as a unique identifier.
' A GUID, also knows as a CLSID and IID a 16-byte identifier that is
guaranteed to be unique.
' This allows developers across the world can independently develop
and deploy their software
' without fear of accidental collision with software written by
others.
' This same GUID value can be used not only for software components,
but for unique keys in
' databases and any other application that requires a unique value.
' COM frequently must map GUIDs (IIDs and CLSIDs) to some arbitrarily
large set of other values.
'
'Copyright: Copyright (C) 1999, Control-Shift Inc. All Rights Reserved.
'Notes: You are free to use and modify this code, but not to distribute
modified versions
' of the ActiveX DLL with the same filename and/or ProgIds.
' If you have made changes which you think are beneficial, or have
bug reports, then you
' can email me (dionwiggins@hotmail.com) and I will do my utmost to
get the a new version
' published.
' You can freely distribute this code, but you must distribute them
it in its original state
' and particularly keep the disclaimer information. Notification
would be greatly appreciated!
' You can freely distribute any compiled code or any products you
build using the code.
' If you wish to distribute the source code files by any other means
(i.e. if you want to
' include it on a CD or any other software media) then the EXPRESS
PERMISSION of the
' Control-Shift Inc. is REQUIRED.
Option Explicit
Private Type GUID
Data1 As Long
Data2 As Long
Data3 As Long
Data4(8) As Byte
End Type
Private Declare Function CoCreateGuid Lib "ole32.dll" ( _
pguid As GUID) As Long
Private Declare Function StringFromGUID2 Lib "ole32.dll" ( _
rguid As Any, _
ByVal lpstrClsId As Long, _
ByVal cbMax As Long) As Long
'Author: Dion Wiggins
'Purpose: Creates a GUID
'Notes:
'Inputs:
' - strRemoveChars The characters to remove from the GUID (usually the {}-
characters)
'History
'Date Author Description
'1 Jun 1999 Dion Wiggins Created
Public Function CreateGUID( _
Optional strRemoveChars As String = "{}-") As String
Dim udtGUID As GUID
Dim strGUID As String
Dim bytGUID() As Byte
Dim lngLen As Long
Dim lngRetVal As Long
Dim lngPos As Long
'Initialize
lngLen = 40
bytGUID = String(lngLen, 0)
'Create the GUID
CoCreateGuid udtGUID
'Convert the structure into a displayable string
lngRetVal = StringFromGUID2(udtGUID, VarPtr(bytGUID(0)), lngLen)
strGUID = bytGUID
If (Asc(Mid$(strGUID, lngRetVal, 1)) = 0) Then
lngRetVal = lngRetVal - 1
End If
'Trim the trailing characters
strGUID = Left$(strGUID, lngRetVal)
'Remove the unwanted characters
For lngPos = 1 To Len(strRemoveChars)
strGUID = Replace(strGUID, Mid(strRemoveChars, lngPos, 1), "")
Next
CreateGUID = strGUID
End Function
' author: Steve. VB5 equivalent of VB6 replace function
Private Function Replace(ByRef sThis As String, ByVal sToReplace As String,
ByVal sReplaceWith As String) As String
Dim iPos As Long
Dim iNextPos As Long
Dim lLen As Long
lLen = Len(sToReplace)
iPos = 1
iNextPos = InStr(sThis, sToReplace)
Do While Not (iNextPos = 0)
Replace = Replace & Mid$(sThis, iPos, iNextPos - iPos) & sReplaceWith
iPos = iNextPos + lLen
iNextPos = InStr(iPos, sThis, sToReplace)
Loop
If iPos < Len(sThis) Then
Replace = Replace & Mid$(sThis, iPos)
End If
End Function
|
|