Страница: 1 |
Вопрос: Подскажите как сгенерить GUID на VB6? | Добавлено: 11.03.04 12:43 |
Автор вопроса: ![]() |
В принципе в теме все понятно. Если можно ответ кодом. За ранее спасибо. |
Ответы | Всего ответов: 2 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() Вечный Юзер! ICQ: uu@jabber.cz Вопросов: 120 Ответов: 3302 |
Профиль | Цитата | #1 | Добавлено: 11.03.04 12:53 |
Private Type GUID PartOne As Long PartTwo As Integer PartThree As Integer PartFour(7) As Byte End Type
Private Declare Function CoCreateGuid Lib "OLE32.DLL" _ (ptrGuid As GUID) As Long Public Function GUID() As String Dim lRetVal As Long Dim udtGuid As GUID
Dim sPartOne As String Dim sPartTwo As String Dim sPartThree As String Dim sPartFour As String Dim iDataLen As Integer Dim iStrLen As Integer Dim iCtr As Integer Dim sAns As String
On Error GoTo errorhandler sAns = ""
lRetVal = CoCreateGuid(udtGuid)
If lRetVal = 0 Then
'First 8 chars sPartOne = Hex$(udtGuid.PartOne) iStrLen = Len(sPartOne) iDataLen = Len(udtGuid.PartOne) sPartOne = String((iDataLen * 2) - iStrLen, "0") _ & Trim$(sPartOne)
'Next 4 Chars sPartTwo = Hex$(udtGuid.PartTwo) iStrLen = Len(sPartTwo) iDataLen = Len(udtGuid.PartTwo) sPartTwo = String((iDataLen * 2) - iStrLen, "0") _ & Trim$(sPartTwo)
'Next 4 Chars sPartThree = Hex$(udtGuid.PartThree) iStrLen = Len(sPartThree) iDataLen = Len(udtGuid.PartThree) sPartThree = String((iDataLen * 2) - iStrLen, "0") _ & Trim$(sPartThree) 'Next 2 bytes (4 hex digits)
'Final 16 chars For iCtr = 0 To 7 sPartFour = sPartFour & _ Format$(Hex$(udtGuid.PartFour(iCtr)), "00") Next
'To create GUID with "-", change line below to: 'sAns = sPartOne & "-" & sPartTwo & "-" & sPartThree _ '& "-" & sPartFour
sAns = sPartOne & sPartTwo & sPartThree & sPartFour
End If
GUID = sAns Exit Function errorhandler: 'return a blank string if there's an error Exit Function End Function |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 178155071 Вопросов: 21 Ответов: 52 |
Профиль | Цитата | #2 | Добавлено: 12.03.04 04:46 |
Я проще нашел. Private Declare Function CoCreateGuid Lib _ "ole32.dll" (buffer As Byte) As Long Private Declare Function StringFromGUID2 Lib _ "ole32.dll" (buffer As Byte, ByVal lpsz As Long, _ ByVal cbMax As Long) As Long Private Function getGUID() As String Dim buffer(0 To 15) As Byte Dim s As String Dim ret As Long s = String$(128, 0) ' получает численный код ret = CoCreateGuid(buffer(0)) ' преобразуем его в текст, ' используя недокументированную функцию StrPtr ret = StringFromGUID2(buffer(0), StrPtr(s), 128) getGUID = Left$(s, ret - 1) ' отсекаем "хвост" End Function |
Страница: 1 |
|