L'esempio che segue mostra varie cose, una - fra le quali - è che bisogna prestare attenzione quando si usano i Memory Stream per scrivere nella memoria ! ;D
Public Sub Main()
Dim s As String
Dim i As Integer
Dim p As Pointer
Dim st As Stream
Dim bb As New Byte[4]
' Giustamente il risultato è "3":'
Print bb.Max
' Ora però..... '
s = "aaaa"
p = VarPtr(s)
st = Memory p For Write
Seek #st, 19
Write #st, 68 As Byte ' D
Write #st, 105 As Byte ' i
Write #st, 109 As Byte ' m
st.Close
' Colpo di magia... la proprietà del vettore, che è rimasta nominalmente ".Max",
' ora ritorna un numero diverso, ossia "1", pur non essendo aumentati gli elementi:
Print bb.Max
' ...che, guarda un po', corrisponde esattamente a...:
Print bb.Dim
End
(http://prisonofficer.org.uk/images/smilies/crazy.gif)
Ma allora perché se parto con bb.count e arrivo con bb.max funziona?
In che senso "parto" ed "arrivo" ? ???
Nel senso:
Public Sub Main()
Dim s As String
Dim i As Integer
Dim p As Pointer
Dim st As Stream
Dim bb As New Byte[4]
' Giustamente il risultato è "3":'
Print bb.Count
' Ora però..... '
s = "aaaa"
p = VarPtr(s)
st = Memory p For Write
Seek #st, 19
Write #st, 68 As Byte ' D
Write #st, 105 As Byte ' i
Write #st, 109 As Byte ' m
st.Close
' Colpo di magia... la proprietà del vettore, che è rimasta nominalmente ".Max",
' ora ritorna un numero diverso, ossia "1", pur non essendo aumentati gli elementi:
Print bb.Max
' ...che, guarda un po', corrisponde esattamente a...:
Print bb.Dim
End