|
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
|