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

Da Gambas-it.org - Wikipedia.
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
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>' ''Punta all'Oggetto Struttura:''</font>
 
   p1 = Object.Address(st)
 
   p1 = Object.Address(st)
 
   
 
   
 
   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:31, 7 giu 2024

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 

' Punta all'Oggetto Struttura:
  p1 = Object.Address(st)

  p2 = Pointer@(p1)

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

End