Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: VB4/32,VB5,VB6
Expertise: Intermediate
Jun 17, 2000

Poke - Write a value of any type into memory

' write a value of any type in memory
'
' The value is written in the format of the value passed
' as the second argument, but you can overwrite it by passing
' an explicit data type in the third argument (this is the only
' way to store a value as a 16-byte Variant)
' This routine doesn't support strings and objects

Sub Poke(ByVal address As Long, value As Variant, Optional ByVal ValueType As _
    VbVarType = -1)
    ' if a data type wasn't provided, use VarType()
    If ValueType = -1 Then ValueType = VarType(value)
    Select Case ValueType
        Case vbByte
            CopyMemory ByVal address, CByte(value), 1
        Case vbInteger
            CopyMemory ByVal address, CInt(value), 2
        Case vbBoolean
            CopyMemory ByVal address, CBool(value), 2
        Case vbLong
            CopyMemory ByVal address, CLng(value), 4
        Case vbSingle
            CopyMemory ByVal address, CSng(value), 4
        Case vbDouble
            CopyMemory ByVal address, CDbl(value), 8
        Case vbCurrency
            CopyMemory ByVal address, CCur(value), 8
        Case vbDate
            CopyMemory ByVal address, CDate(value), 8
        Case vbVariant
            CopyMemory ByVal address, value, 16
        Case Else
            Err.Raise 1001, , "Unsupported data type"
    End Select

End Sub
Francesco Balena
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap