проблемы с cocreateguid

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ange
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 03.02.2005 (Чт) 11:58

проблемы с cocreateguid

Сообщение ange » 03.02.2005 (Чт) 12:00

не дает использовать эту функцию
говорит что не может найти entry point для cocreateguid в ole32.dll

вычитала что нужно зарегистрировать com-библиотеку перед использованием cocreateguid

а как?

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 03.02.2005 (Чт) 12:02

В командной строке:
regsvr32 <путь к библиотеке>

ange
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 03.02.2005 (Чт) 11:58

Сообщение ange » 03.02.2005 (Чт) 12:07

а в самом коде

нашла ссылку на CoInitialize, но что за функция, какие параметры и где лежит ....

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Сообщение codemaster » 03.02.2005 (Чт) 12:08

попробуй объявить так

Код: Выделить всё
Public Declare Function CoCreateGuid Lib "ole32.dll" (ptrGuid As Guid) As Long
//<-
Mit freundlichen Grüßen
//->

ange
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 03.02.2005 (Чт) 11:58

Сообщение ange » 03.02.2005 (Чт) 12:12

regsvr32 не помог

да, только (... as guid)
а этот тип данных в той же библиотеке?
или как его описать?

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 03.02.2005 (Чт) 12:14

ange, а regsvr32 что-то сказал при этом? Что "всё нормально", или "Не удалось зарегистрировать"?

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Сообщение codemaster » 03.02.2005 (Чт) 12:15

гдето в модуле попробуй так
Код: Выделить всё
Public Declare Function CoCreateGuid Lib "ole32.dll" (ptrGuid As Guid) As Long


Public Type Guid
    PartOne As Long
    PartTwo As Integer
    PartThree As Integer
    PartFour(7) As Byte
End Type
'



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

//<-
Mit freundlichen Grüßen
//->

ange
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 03.02.2005 (Чт) 11:58

Сообщение ange » 03.02.2005 (Чт) 12:15

сказал что зарегистрировал, однако при попытке в коде вызвать cocreateguid
ошибка - can't find entry point for cocreateguid in ole32.dll

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 03.02.2005 (Чт) 12:16

Может у тебя OLE устаревшей версии?
Какая операционка?
Lasciate ogni speranza, voi ch'entrate.

ange
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 03.02.2005 (Чт) 11:58

Сообщение ange » 03.02.2005 (Чт) 12:19

win xp

ange
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 03.02.2005 (Чт) 11:58

Сообщение ange » 03.02.2005 (Чт) 12:23

cocreateguid(... as guid) тоже не помог
ругается - та же самая ошибка

видимо с ole что-то не то
как можно исправить?

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Сообщение codemaster » 03.02.2005 (Чт) 12:24

код в студию
//<-
Mit freundlichen Grüßen
//->

ange
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 03.02.2005 (Чт) 11:58

Сообщение ange » 03.02.2005 (Чт) 12:26

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))
ret = StringFromGUID2(buffer(0), StrPtr(s), 128)

getGUID = Left$(s, ret - 1)

End Function

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 03.02.2005 (Чт) 13:11

Код: Выделить всё
Private Declare Function CoCreateGuid Lib "ole32.dll" (buffer As Guid) As Long
Private Declare Function StringFromGUID2 Lib "ole32.dll" (buffer As Guid, ByVal lpsz As Long, ByVal cbMax As Long) As Long

Private Type Guid
  Data1 As Long
  Data2 As Integer
  Data3 As Integer
  Data4(0 To 7) As Byte
End Type

Private Function getGUID() As String
  Dim buffer As Guid
  Dim s As String
 
  CoCreateGuid buffer
  s = String$(128, 0)
  getGUID = Left$(s, StringFromGUID2(buffer, StrPtr(s), Len(s)) - 1)
 
End Function
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ange
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 03.02.2005 (Чт) 11:58

Сообщение ange » 03.02.2005 (Чт) 13:19

вот именно ваш код вставила - не работает!!!!
как быть?

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Сообщение codemaster » 03.02.2005 (Чт) 13:55

поробуй мой код (см. выше) :wink: :wink:

P.S. Оба варианта рабочие
//<-
Mit freundlichen Grüßen
//->


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 178

    TopList