Differenze tra le versioni di "Conoscere via codice il nome di una Struttura"

Da Gambas-it.org - Wikipedia.
 
Riga 2: Riga 2:
  
  
Mostriamo un semplice esempio pratico valido per un sistema a 64bit:
+
Mostriamo un semplice esempio pratico valido per un sistema a 64bit, nel quale il nome (Etichetta) identificativo della Struttura è "STRUTTURA":
  Public Struct STRUTTURA
+
  Public Struct <FONT Color=#B22222>STRUTTURA</font>
 
   b As Byte
 
   b As Byte
 
   c As Short
 
   c As Short
Riga 10: Riga 10:
 
   
 
   
 
   
 
   
  '''Public Sub Main()
+
  '''Public''' Sub Main()
 
   
 
   
  Dim st As New STRUTTURA
+
  Dim st As New <FONT Color=#B22222>STRUTTURA</font>
  Dim p1, p2 As Pointer  
+
  Dim p1, p2 As Pointer  
 
   
 
   
 
  <FONT Color=gray>' ''Puntiamo all'oggetto Struttura:''</font>
 
  <FONT Color=gray>' ''Puntiamo all'oggetto Struttura:''</font>
Riga 20: Riga 20:
 
   p2 = Pointer@(p1)
 
   p2 = Pointer@(p1)
 
   
 
   
   Print "Nome della Struttura: ";; String@(Pointer@(p2 + 24))
+
   Print "Nome della Struttura: "; String@(Pointer@(p2 + (SizeOf(gb.Pointer) * 3)))
 
   
 
   
 
  '''End'''
 
  '''End'''

Versione attuale delle 18:46, 7 apr 2022

Per conoscere via codice l'etichetta identificativa di una Struttura partendo dalla sua variabile, si effettuerà una ricerca nella sua area di memoria, puntando alla quale mediante apposito Puntatore:


Mostriamo un semplice esempio pratico valido per un sistema a 64bit, nel quale il nome (Etichetta) identificativo della Struttura è "STRUTTURA":

Public Struct STRUTTURA
  b As Byte
  c As Short
  i As Integer
End Struct


Public Sub Main()

  Dim st As New STRUTTURA
  Dim p1, p2 As Pointer 

' Puntiamo all'oggetto Struttura:
  p1 = Object.Address(st)

  p2 = Pointer@(p1)

  Print "Nome della Struttura: "; String@(Pointer@(p2 + (SizeOf(gb.Pointer) * 3)))

End