Differenze tra le versioni di "Ottenere il puntatore di una variabile di tipo Struttura"

Da Gambas-it.org - Wikipedia.
Riga 1: Riga 1:
In taluni casi particolari può essere necessario passare ad una funzione, oppure ad una variabile di tipo ''Puntatore'', il ''Puntatore'' di una variabile di tipo ''Struttura'' (ossia una variabile di tipo ''Puntatore'' che ''punta'' all'indirizzo di memoria di una variabile di tipo ''Struttura'').
+
E' possibile ottenere il ''Puntatore'' di una variabile di tipo ''Struttura'' (ossia una variabile di tipo ''Puntatore'' che ''punta'' all'indirizzo di memoria di una variabile di tipo ''Struttura'') mediante due funzioni diverse:
  
Per ottenere il ''Puntatore'' di una variabile di tipo ''Struttura'' non è possibile operare con la funzione ''VarPtr'', poiché essa, come ben precisato nella guida ufficiale di Gambas, "''il tipo di dati della variabile, deve essere un intero, un puntatore o una stringa''". Quindi le variabili di tipo ''Struttura'' sono escluse !
 
  
Essendo la variabile comunque un oggetto, la soluzione può essere trovata nel metodo ''.Address()'' della Classe ''Object''. Infatti, detto metodo "''ritorna l'indirizzo di memoria di un oggetto''", ritornando quindi una variabile di tipo ''Puntatore''.
+
* la funzione ''VarPtr'', la quale ritorna un ''Puntatore'' che punta alla variable contenuta in memoria:
 +
<FONT color=B22222>VarPtr</font>(Variabile_Struttura) As Pointer
  
La sintassi generale è la seguente:
 
Object.Address( Object As Object ) As Pointer
 
  
 
+
* il metodo ''.Address()'' della Classe ''Object'', che ritorna l'indirizzo di memoria di un oggetto, quindi un ''Puntatore'':
e pertanto, nel caso in questione, posto ''var_struct'' come variabile di tipo ''Struttura'', si otterrà un ''Puntatore'' a detta variabile nel modo seguente:
+
  <FONT color=B22222>Object.Address</font>(Variabile_Struttura) As Pointer
  Dim p As Pointer
 
Dim var_struct As New Struttura
 
 
  p = Object.Address(var_struct)
 
 
  ......
 

Versione delle 20:01, 13 nov 2013

E' possibile ottenere il Puntatore di una variabile di tipo Struttura (ossia una variabile di tipo Puntatore che punta all'indirizzo di memoria di una variabile di tipo Struttura) mediante due funzioni diverse:


  • la funzione VarPtr, la quale ritorna un Puntatore che punta alla variable contenuta in memoria:
VarPtr(Variabile_Struttura) As Pointer


  • il metodo .Address() della Classe Object, che ritorna l'indirizzo di memoria di un oggetto, quindi un Puntatore:
Object.Address(Variabile_Struttura) As Pointer