MartyConnelly
martyconnelly at shaw.ca
Fri Jul 20 15:36:33 CDT 2007
If you just need a random 16 byte string how about creating a GUID
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(7) 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 GUID, _
ByVal lpsz As String, cbMax As Long) As Long
'More GUID routines here
' http://www.trigeminal.com/code/guids.bas
Sub testguid()
Dim pudtGUID As GUID
Dim pstrGUID As String
Dim plngRet As Long
pstrGUID = String(256, 0)
Debug.Print CoCreateGuid(pudtGUID)
plngRet = StringFromGUID2(pudtGUID, pstrGUID, Len(pstrGUID))
Debug.Print plngRet
Debug.Print "GUID = " & Left(pstrGUID, plngRet)
Debug.Print pstrGUID
End Sub
Mark A Matte wrote:
>Thanks Everyone,
>
>I ended up using a loop to get my powers...before I was the power by 1 for
>each record...now I added a new loop to get the actual number if you
>calculated out to the nth power. I was in the quadrillions when I finished.
> Thanks Again,
>
>Mark
>
> Power = Power - 1
> PowerNum = CDec(36)
> For PNLoop = 1 To Power - 1
> PowerNum = CDec(PowerNum * CDec(36))
> Next
>
>
>
>
>>From: "Gustav Brock" <Gustav at cactus.dk>
>>Reply-To: Access Developers discussion and problem
>>solving<accessd at databaseadvisors.com>
>>To: <accessd at databaseadvisors.com>
>>Subject: Re: [AccessD] Math in VBA
>>Date: Thu, 19 Jul 2007 21:25:42 +0200
>>
>>Hi Mark
>>
>>Chris is right. You have to keep the _numeric_ expressions within that of a
>>Long if you wish to maintain accuracy.
>>
>>Thus:
>>? CDec(36 ^10)
>> 3656158440062980
>>? CDec(36 ^ 5) * CDec(36 ^ 5)
>> 3656158440062976
>>
>>because CDec(36 ^ 5) = 60466176.
>>
>>/gustav
>>
>>
>>
>>>>>cjeris at fas.harvard.edu 19-07-2007 20:37 >>>
>>>>>
>>>>>
>>-----BEGIN PGP SIGNED MESSAGE-----
>>Hash: SHA1
>>
>>Mark A Matte wrote:
>>
>>
>>>ttt = CDec(36 * 36 * 36)
>>>
>>>
>>6^6 = 46656 overflows a 16-bit signed integer. Now we can all line up
>>and kick someone in the head for leaving a 16-bit signed integer type in
>>a program written after 1995.
>>
>>Try
>>ttt = CDec(36) * CDec(36) * CDec(36)
>>
>>Also, be careful!
>>
>>
>>>tt = CDec(36 ^ 10)
>>>
>>>
>>That ^ is the _floating_point_ exponentiation operator! The result is
>>not the integer 6^20; if you look at tt, you will see that it ends in a
>>0, which no power of 6 does. What you get there is the decimal
>>conversion of the floating-point exponentiation.
>>
>>peace, Chris Jeris
>>
>>
--
Marty Connelly
Victoria, B.C.
Canada