WritePoke




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


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










( writepoke.html )- by Paolo Puglisi - Modifica del 17/12/2023