Cada "Objeto" de gambas está constituido ante todo por más porciones de memoria, organizadas según las específicas Estructuras previstas por los nacientes de gambas para cada Objeto, dedicadas a almacenar los datos que caracterizarán los Objetos mismos.
Poder y ser capaz pues acceder a las áreas de memoria de un Objeto, significa poder modificar los valores de sus propiedades.
Con una operación de ingeniería en la memoria se pueden modificar "genéticamente" Objetos que solo en apariencia son aquellos originarios, y en cambio hacen referencia a otros Objetos.
Vamos a hacer un ejemplo: poned sobre el Form un "PictureBox" y un "TextBox.
Library "libc:6"
' void *memcpy (void *__restrict __dest, const void *__restrict __src, size_t __n)
' Copy N bytes of SRC to DEST.
Private Extern memcpy(__dest As Pointer, __src As Pointer, __n As Long)
Public Sub Form_Open()
Dim p1, p2 As Pointer
Dim t1, t2 As Pointer
Dim s As String
With PictureBox1
.Background = Color.Yellow
.Foreground = Color.Blue
End With
' Accedemos profundamente en las Estructuras fuentes del "PictureBox":
p1 = Object.Address(PictureBox1)
p2 = Pointer@(p1)
' Accedemos profundamente en las Estructuras fuentes del "TexteBox":
t1 = Object.Address(TextBox1)
t2 = Pointer@(t1)
' Hagamos que el "PictureBox" apunte a los recursos del "TextBox" !!!
memcpy(p1, t1, 144)
memcpy(p2, t2, 512)
' ...es la PictureBox que se desplaza?
PictureBox1.X = 500
' Perdón...pero...cuándo el PictureBox tuvo la Propiedad ".Text" ?!?!?
PictureBox1.Text = PictureBox1.Name
' Eeeh ! ...que nome tiene el "PictureBox" ???????
Print PictureBox1.Text, TextBox1.Text
' Descubriréis que los recursos del PictureBox no son de la Clase "PictureBox", sino del "TextBox" !!!
For Each s In Object.Class(PictureBox1).Symbols
Print s
Next
End
Public Sub TextBox1_Enter() ' Probad a pasar con el ratón sobre el "PictureBox".....
Print "Si tú estás pasando con el ratón sobre el PictureBox... ...de verdad estás seguro que el Objeto atañe a el PictureBox ?"
End
' void *memcpy (void *__restrict __dest, const void *__restrict __src, size_t __n)
' Copy N bytes of SRC to DEST.
Private Extern memcpy(__dest As Pointer, __src As Pointer, __n As Long)
Public Sub Form_Open()
Dim p1, p2 As Pointer
Dim t1, t2 As Pointer
Dim s As String
With PictureBox1
.Background = Color.Yellow
.Foreground = Color.Blue
End With
' Accedemos profundamente en las Estructuras fuentes del "PictureBox":
p1 = Object.Address(PictureBox1)
p2 = Pointer@(p1)
' Accedemos profundamente en las Estructuras fuentes del "TexteBox":
t1 = Object.Address(TextBox1)
t2 = Pointer@(t1)
' Hagamos que el "PictureBox" apunte a los recursos del "TextBox" !!!
memcpy(p1, t1, 144)
memcpy(p2, t2, 512)
' ...es la PictureBox que se desplaza?
PictureBox1.X = 500
' Perdón...pero...cuándo el PictureBox tuvo la Propiedad ".Text" ?!?!?
PictureBox1.Text = PictureBox1.Name
' Eeeh ! ...que nome tiene el "PictureBox" ???????
Print PictureBox1.Text, TextBox1.Text
' Descubriréis que los recursos del PictureBox no son de la Clase "PictureBox", sino del "TextBox" !!!
For Each s In Object.Class(PictureBox1).Symbols
Print s
Next
End
Public Sub TextBox1_Enter() ' Probad a pasar con el ratón sobre el "PictureBox".....
Print "Si tú estás pasando con el ratón sobre el PictureBox... ...de verdad estás seguro que el Objeto atañe a el PictureBox ?"
End