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

Da Gambas-it.org - Wikipedia.
(Creata pagina con 'Per conoscere via codice l'etichetta identificativa di una ''Struttura'', si effettuerà una ricerca nella sua area di memoria, puntanto alla quale mediante apposito ''Puntato...')
 
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Per conoscere via codice l'etichetta identificativa di una ''Struttura'', si effettuerà una ricerca nella sua area di memoria, puntanto alla quale mediante apposito ''Puntatore'':
+
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:
+
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