Differenze tra le versioni di "VarPtr"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "La funzione '''VarPtr()''' Puntatore = VarPtr ( ''Variabile'' ) restituisce un "Puntatore" che punta al contenuto della variabile in memoria. <BR>La variabile deve essere una...")
 
 
(8 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
 
La funzione '''VarPtr()'''
 
La funzione '''VarPtr()'''
 
  Puntatore = VarPtr ( ''Variabile'' )
 
  Puntatore = VarPtr ( ''Variabile'' )
restituisce un "Puntatore" che punta al contenuto della variabile in memoria.
+
restituisce un "Puntatore" che punta al contenuto della variabile in memoria. Pertanto la funzione "[https://gambaswiki.org/wiki/lang/varptr?l=it VarPtr()]" restituisce l'indirizzo di memoria della variabile passata al suo unico argomento.
 
<BR>La variabile deve essere una variabile locale o una variabile globale della classe corrente.
 
<BR>La variabile deve essere una variabile locale o una variabile globale della classe corrente.
 
<BR>Il tipo di dati della variabile deve essere un numero, una data o un puntatore.
 
<BR>Il tipo di dati della variabile deve essere un numero, una data o un puntatore.
<BR>Tale variabile può essere una stringa solo per variabili "[[Le_Variabili#Dichiarazione_delle_variabili_Globali|globali]]". In tal caso, il "Puntatore" restituito <SPAN Style="text-decoration:underline">non</span> è l'indirizzo del contenuto della stringa, ma è l'indirizzo di un <SPAN Style="text-decoration:underline">altro</span> "Puntatore" che punta al contenuto della stringa.
+
Public Sub Main()
 +
 +
  Dim i As Integer
 +
  Dim p As Pointer
 +
 
 +
  i = 123456
 +
 
 +
  p = VarPtr(i)
 +
 
 +
End
  
Il parametro ''Variabile'' può essere una anche di tipo "Variant". Ma, attenzione, il "Puntatore" restituito è garantito per essere valido fino a quando non cambia il tipo di dati della variante.
 
  
Utilizzare questa funzione quando l'argomento di una [[Extern:_richiamare_funzioni_esterne_a_Gambas|funzione esterna]] è un "Puntatore" a una variabile numerica. Ad esempio, int * o void **.
+
===Uso della funzione VarPtr() con variabili di tipo String===
 +
La variabile assegnata alla funzione "VarPtr()" può essere una stringa solo se "[[Le_Variabili#Dichiarazione_delle_variabili_Globali|globale]]":
 +
Private <FONT Color=darkgreen>$var</font> As '''String''' = "abcdefg"
 +
 +
 +
Public Sub .....()
 +
 +
  dim p As Pointer
 +
 +
  p = VarPtr(<FONT Color=darkgreen>$var</font>)
 +
 +
  ......
 +
In tal caso, il "Puntatore" restituito <U>non</u> è l'indirizzo del contenuto della stringa, ma è l'indirizzo di un <U>altro</u> "Puntatore" (''Puntatore di Puntatore'') che punta al contenuto della stringa.
 +
 
 +
Il parametro ''Variabile'' della funzione "VarPtr()" può essere una anche di tipo "Variant". Ma, attenzione, il "Puntatore" restituito è garantito per essere valido fino a quando non cambia il tipo di dati della variante.
 +
 
 +
Utilizzare questa funzione quando l'argomento di una [[Extern:_richiamare_funzioni_esterne_a_Gambas|funzione esterna]] è un "Puntatore" a una variabile numerica. Ad esempio, int * oppure void **.
 
<BR>Non si deve usare, invece, per gestire char **, perché il contenuto di una variabile stringa Gambas è di sola lettura.
 
<BR>Non si deve usare, invece, per gestire char **, perché il contenuto di una variabile stringa Gambas è di sola lettura.

Versione attuale delle 17:35, 6 lug 2024

La funzione VarPtr()

Puntatore = VarPtr ( Variabile )

restituisce un "Puntatore" che punta al contenuto della variabile in memoria. Pertanto la funzione "VarPtr()" restituisce l'indirizzo di memoria della variabile passata al suo unico argomento.
La variabile deve essere una variabile locale o una variabile globale della classe corrente.
Il tipo di dati della variabile deve essere un numero, una data o un puntatore.

Public Sub Main()

 Dim i As Integer
 Dim p As Pointer
 
 i = 123456
 
 p = VarPtr(i)
 
End


Uso della funzione VarPtr() con variabili di tipo String

La variabile assegnata alla funzione "VarPtr()" può essere una stringa solo se "globale":

Private $var As String = "abcdefg"


Public Sub .....()

 dim p As Pointer

 p = VarPtr($var)

 ......

In tal caso, il "Puntatore" restituito non è l'indirizzo del contenuto della stringa, ma è l'indirizzo di un altro "Puntatore" (Puntatore di Puntatore) che punta al contenuto della stringa.

Il parametro Variabile della funzione "VarPtr()" può essere una anche di tipo "Variant". Ma, attenzione, il "Puntatore" restituito è garantito per essere valido fino a quando non cambia il tipo di dati della variante.

Utilizzare questa funzione quando l'argomento di una funzione esterna è un "Puntatore" a una variabile numerica. Ad esempio, int * oppure void **.
Non si deve usare, invece, per gestire char **, perché il contenuto di una variabile stringa Gambas è di sola lettura.