请问"用new guid 产生36位码"是什么意思?
可不可以这样理解:Guid是一个数据类型,转换为string为36位。
那么在FORM1里面如何产生36位码,然后赋值给myid?
这个东西好像挺乱的,请高手帮忙

解决方案 »

  1.   

    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=195311
      

  2.   

    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 LongPrivate Sub Command1_Click()
    Text1.Text = GetGUIDCode()
    End Sub
    '
    '取GUID码
    '参数:
    '返回值:STRING,一个GUID码.
    Private Function GetGUIDCode() As String
      Dim uGUID As GUID
      Dim sGUID As String
      Dim bGUID() As Byte
      Dim lLen As Long
      Dim RetVal As Long
      
      lLen = 40
      bGUID = String(lLen, 0)
      CoCreateGuid uGUID '把结构转换为一个可显示的字符串
      RetVal = StringFromGUID2(uGUID, VarPtr(bGUID(0)), lLen)
      sGUID = bGUID
      If (Asc(Mid$(sGUID, RetVal, 1)) = 0) Then RetVal = RetVal - 1
      GetGUIDCode = Left$(sGUID, RetVal)
    End Function
      

  3.   

    Option Explicit
    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
    Private Sub Command1_Click()
    Text1.Text = GUID()
    End SubPublic 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
     
           sAns = sPartOne & sPartTwo & sPartThree & sPartFour
                
            End If
            
            GUID = sAns
    Exit Function
    errorhandler:
    Exit Function
    End Function
      

  4.   

    借个地方问个问题。我也是这么做的,但是在windowsXP和windows2000下正常,在windows98下出错。我在打包的时候选择了从微软网站上更新所需的动态连接库。98下也正常了。我打包的是嵌在网页里的activex。所以不能做安装程序。我打包的是嵌在网页里的activex。所以不能做安装程序。直接调用没更新过的98里的ole32.dll来产生GUID应该怎样写。