Vedere in runtime tutte le variabili locali presenti in un'applicazione
Da Gambas-it.org - Wikipedia.
Versione del 19 gen 2017 alle 19:29 di Vuott (Discussione | contributi)
Vediamo in questa pagina una curiosità, ossia come sia possibile vedere in runtime l'identificatore di tutte le variabili locali presenti nel Modulo o una Classe dell'applicazione.
Ci serviremo di un Puntatore ad una variabile di tipo Stringa che sia stata istanziata con almeno due caratteri.
Mostriamo un breve esempio pratico:
Public Sub Main() Dim s As String Dim p As Pointer Dim i As Integer ' La variabile stringa deve contenere almeno due caratteri: s = "a " p = VarPtr(s) For i = 0 To 23 Print i, Byte@(p + i), Chr(Byte@(p + i)) Next End
Di seguito un altro esempio un po' più complesso del precedente:
Private Const LAT As Short = 256 Public Sub Main() Dim s As String Dim po As Pointer Dim c As Integer Dim bb As Byte[] Dim st As Stream Dim i As Integer s = "Testo qualsiasi" po = VarPtr(s) If po = 0 Then Error.Raise("Puntatore non valido !") st = Memory po For Read With bb = New Byte[LAT] .Read(st, 0, bb.Count) s = .ToString(0, bb.Count) End With st.Close c = InStr(s, Chr(&40) & Chr(&6E) & Chr(&65)) s = bb.ToString(c + 4, InStr(s, "\x00\x00", c) - (c + 4)) Print "Elenco delle variabili 'locali' presenti:\n" Print Replace(s, "\x00", "\n") End Private Procedure Nomen(b As Byte) Dim sh As Short Dim n As Integer Dim v As Variant End