Poter e sapere dunque accedere alle aree di memoria di un Oggetto, significa poter modificare i valori delle sue proprietà.
......potrei addirittura impedire l'accesso (anche temporaneamente) alle risorse (Proprietà, Metodi, Eventi) di un Oggetto.
Nell'esempio che segue poniamo sul Form una
Label e un
Button, poi impostiamo il seguente codice:
Public Sub Form_Open()
' Attribuiamo il colore rosso allo sfondo della Label:'
Label1.Background = Color.Red
End
Public Sub Button1_Click()
Dim st As Stream
' Accediamo al 1° membro della Struttura del file sorgente ".../gambasdevel/main/gbx/gbx_object.h", propria di ciascun Oggetto creato:'
st = Memory VarPtr(Label1) For Write
' Assegnando il valore zero, "impediamo" l'accesso alla Struttura propria di - in questo caso - "Label1":
Write #st, 0 As Integer
st.Close
' Verifichiamo se l'Oggetto "Label1" è valido, nonché il valore d'indirizzo dell'Oggetto "Label1":
Print Object.IsValid(Label1), Label1
' Proviamo la conferma, chiedendo sia stampato il valore del colore dello sfondo di "Label1"; ma succede che....:'
Print Label1.Background
End