Dim myData1(10) As Byte
Dim myData2(10) As Word
Dim pMyData1 As DWord
Dim pMyData2 As DWord
Dim a,b,c,d,e As Byte
Dim f,g,h,i,j As Word
Dim sMsg As String
Dim Datasize1 As DWord
Dim Datasize2 As DWord
Mydata1(1) = 1,2,3,4,5
Mydata2(1) = &h11AA,&h5522,&h3663,&h4CC4,&h578A
'pMyData1 = VarPtr(MyData1(1))
'pMyData2 = VarPtr(MyData2(1))
Datasize1 = UBound(myData1)*SizeOf(Mydata1(1))
Datasize2 = UBound(myData2)*SizeOf(Mydata2(1))
sMsg = "Data before : "+$CRLF(2)
sMsg += "a = "+Hex$( a,SizeOf(a)*2 )+$CRLF
sMsg += "b = "+Hex$( b,SizeOf(b)*2 )+$CRLF
sMsg += "c = "+Hex$( c,SizeOf(c)*2 )+$CRLF
sMsg += "d = "+Hex$( d,SizeOf(d)*2 )+$CRLF
sMsg += "e = "+Hex$( e,SizeOf(e)*2 )+$CRLF(2)
Restore(VarPtr(MyData1(1)), UBound(myData1), SizeOf(Mydata1(1)))
Read(a,b,c,d,e)
sMsg += "Data After :"+$CRLF(2)
sMsg += "a = "+Hex$( a,SizeOf(a)*2 )+$CRLF
sMsg += "b = "+Hex$( b,SizeOf(b)*2 )+$CRLF
sMsg += "c = "+Hex$( c,SizeOf(c)*2 )+$CRLF
sMsg += "d = "+Hex$( d,SizeOf(d)*2 )+$CRLF
sMsg += "e = "+Hex$( e,SizeOf(e)*2 )+$CRLF(2)
MsgBox 0, smsg
sMsg = "Data before : "+$CRLF(2)
sMsg += "f = "+Hex$( f,SizeOf(a)*2 )+$CRLF
sMsg += "g = "+Hex$( g,SizeOf(b)*2 )+$CRLF
sMsg += "h = "+Hex$( h,SizeOf(c)*2 )+$CRLF
sMsg += "i = "+Hex$( i,SizeOf(d)*2 )+$CRLF
sMsg += "j = "+Hex$( j,SizeOf(e)*2 )+$CRLF(2)
Restore(VarPtr(MyData2(1)), UBound(myData2), SizeOf(Mydata2(1)))
Read(f,g,h,i,j)
sMsg += "Data After :"+$CRLF(2)
sMsg += "f = "+Hex$( f,SizeOf(f)*2 )+$CRLF
sMsg += "g = "+Hex$( g,SizeOf(g)*2 )+$CRLF
sMsg += "h = "+Hex$( h,SizeOf(h)*2 )+$CRLF
sMsg += "i = "+Hex$( i,SizeOf(i)*2 )+$CRLF
sMsg += "j = "+Hex$( j,SizeOf(j)*2 )+$CRLF(2)
MsgBox 0, smsg
Stop
'
' Restore usage :
'
' Restore(DataIn, Elements,DataSize )
' Datain = the address of the array
' Elements = the size of the array
' Datasize = the number of bytes for the datatype (byte=1,word=2,...)
'
Function Restore(DataIn, Elements,DataSize )
Static Data As DWord
Local cParams As Long
Local flag As Long
Flag = 1
cParams = Function_CParams
If CParams = 0 Then Exit Function
If (Function_CParams => 2) Then
Data = DataIn
Read(Flag, DataIn, Elements, Datasize)
End If
End Function
Function READ(Optional ByRef aa,ByRef bb,ByRef cc,ByRef dd,ByRef ee,ByRef ff,ByRef gg,ByRef hh,ByRef ii,ByRef jj,ByRef kk,ByRef ll)
Static counter As DWord
Static Data As DWord
Static DataSize As DWord
Static Elements As DWord
Local cParam As DWord
Local varList(12) As DWord
Local N, M As DWord
cParam = Function_CParams ' return the number of passed paramaters
If aa = 1 Then
Data = bb
Elements = cc
Datasize = dd
Counter = 0
Exit Function
Else
Incr n : VarList(n) = VarPtr(aa)
Incr n : VarList(n) = VarPtr(bb)
Incr n : VarList(n) = VarPtr(cc)
Incr n : VarList(n) = VarPtr(dd)
Incr n : VarList(n) = VarPtr(ee)
Incr n : VarList(n) = VarPtr(ff)
Incr n : VarList(n) = VarPtr(gg)
Incr n : VarList(n) = VarPtr(hh)
Incr n : VarList(n) = VarPtr(ii)
Incr n : VarList(n) = VarPtr(jj)
Incr n : VarList(n) = VarPtr(kk)
Incr n : VarList(n) = VarPtr(ll)
ReDim Preserve Varlist(CParam) ' Clean up variable list
For n = 1 To CParam ' Variable counter loop
For M = 0 To Datasize-1
If Counter > Elements Then Counter = 0
Poke( VarList(n)+m, Peek( Data+Counter) )
Incr counter
Next ' m
Next ' n
End If
End Function
Bookmarks