Bueno, nosotros podemos esconder un valor que, así, se queda invisible y ilegible cuando leemos los miembros de la Structura. ...incredibile auditu !
Public Struct STRUCTURA
b As Byte
i As Integer
End Struct
Public Sub Main()
Dim r As STRUCTURA
Dim p, p2 As Pointer
Dim st As Stream
With r = New STRUCTURA
.b = 99
.i = 9999
End With
' Vamos a ver los valores contenidos de los miembros de la Structura:
Print "Valores iniciales de la Structura:"
With r
Print .b
Print .i
End With
' Escondimos un valor de tipo "Short" en la Structura:
p = Object.Address(r)
st = Memory p For Write
' Los valores en la area de memoria de una Structura, instanciada por la palabra "New", comienzan desde el 25° byte (índice 24).
' En este caso, el byte de índice 24 es ocupado de el valor del primero miembro (de tipo Byte) de la Structura.
' Por eso, escondimos el valor empezando por el byte de índice 25 (claro que podemos tambien por el 26).
Seek #st, 25
Write #st, 11111 As Short
st.Close
' Vamos a ver si la operacion ha mellado los valores precedentes de la Structura:
Print "\nValores de la Structura despues la ocultación del nuestro valor 'Short':"
With r
Print .b
Print .i
End With
' Ahora vamos a... descovar el valor "Short" de su refugio:
p2 = Object.Address(r)
p2 = p2 + 25
Print "\x0A\x0A...y vuott gritó: \"Short, de profundis veni foras !\"\n"
Print Short@(p2); " ...y el valor apareció !"
End
b As Byte
i As Integer
End Struct
Public Sub Main()
Dim r As STRUCTURA
Dim p, p2 As Pointer
Dim st As Stream
With r = New STRUCTURA
.b = 99
.i = 9999
End With
' Vamos a ver los valores contenidos de los miembros de la Structura:
Print "Valores iniciales de la Structura:"
With r
Print .b
Print .i
End With
' Escondimos un valor de tipo "Short" en la Structura:
p = Object.Address(r)
st = Memory p For Write
' Los valores en la area de memoria de una Structura, instanciada por la palabra "New", comienzan desde el 25° byte (índice 24).
' En este caso, el byte de índice 24 es ocupado de el valor del primero miembro (de tipo Byte) de la Structura.
' Por eso, escondimos el valor empezando por el byte de índice 25 (claro que podemos tambien por el 26).
Seek #st, 25
Write #st, 11111 As Short
st.Close
' Vamos a ver si la operacion ha mellado los valores precedentes de la Structura:
Print "\nValores de la Structura despues la ocultación del nuestro valor 'Short':"
With r
Print .b
Print .i
End With
' Ahora vamos a... descovar el valor "Short" de su refugio:
p2 = Object.Address(r)
p2 = p2 + 25
Print "\x0A\x0A...y vuott gritó: \"Short, de profundis veni foras !\"\n"
Print Short@(p2); " ...y el valor apareció !"
End