Differenze tra le versioni di "Conoscere in runtime il numero identificatore di un tipo di dato di una variabile presente nel codice"

Da Gambas-it.org - Wikipedia.
 
(10 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Nel file dei sorgenti di Gambas "''/home/[USER]/gambasdevel/main/share/gambas.h'' " è presenti - quasi all'inizio - l'elenco dei numeri identificatore dei tipi di dati (''Gambas datatypes identifiers'' ), previsti da Gambas.
+
===Usando la funzione nativa di Gambas "TypeOf()"===
 +
Per conoscere il tipo di dato, al quale appartiene una variabile dichiarata nel codice, è sufficiente utilizzare la funzione nativa di Gambas: "[https://gambaswiki.org/wiki/lang/typeof?l=it TypeOf()]".
 +
<BR>In particolare questa funzione restituisce il numero identificativo del tipo di dati individuato all'interno dell'elenco presente nel file sorgente di Gambas
 +
''/home/[USER]/gambasdevel/main/share/gambas.h''
 +
o anche nel file sorgente di Gambas
 +
''User.Home &/ "main/share/gb_type_common.h"''
 +
e riscontrabile nelle Costanti di ritorno che rappresentano i tipi di dati. <SUP>&#091;[[#Note|<B>Nota 1</b>]]&#093;</sup>
 +
 
 +
I tipi di dati non nativi di Gambas, come la ''Struttura'', sono identificati semplicemente con il numero "16", che identifica il tipo "Object" (''[https://gambaswiki.org/wiki/comp/gb/gb/object?l=it gb.Object]'' ).
 +
 
 +
===Usando l'indirizzo di memoria della variabile===
 +
Come già detto nel paragrafo precedente, nel file sorgente di Gambas "''/home/[USER]/gambasdevel/main/share/gambas.h'' " è presente - quasi all'inizio - l'elenco dei numeri identificatore dei tipi di dati (''Gambas datatypes identifiers'' ), previsti da Gambas.
 
<BR>Per conoscere a quale numero identificatore di tipo di dato appartiene una variabile dichiarata nel codice, si dovrà ottenere l'indirizzo di memoria di tale variabile e sottrarre a questo 8 unità come segue:
 
<BR>Per conoscere a quale numero identificatore di tipo di dato appartiene una variabile dichiarata nel codice, si dovrà ottenere l'indirizzo di memoria di tale variabile e sottrarre a questo 8 unità come segue:
 
  Public Sub Main()
 
  Public Sub Main()
 
   
 
   
 
   Dim p As Pointer
 
   Dim p As Pointer
   Dim id As Short  <FONT Color=ray>' ''Pone un variabile di tipo "Short" da verificare:''</font>
+
   Dim id As Short  <FONT Color=gray>' ''Pone una variabile di tipo "Short" da verificare:''</font>
 
   
 
   
 
   p = VarPtr(id)
 
   p = VarPtr(id)
 
   
 
   
  <FONT Color=ray>' ''Trova il numero identificatore del tipo di dato della variabile:''</font>
+
  <FONT Color=gray>' ''Trova il numero identificatore del tipo di dato della variabile:''</font>
   Print "Gambas datatype identifier: "; Byte@(p <B>- 8</b>)
+
   Print "Gambas datatype identifier: "; Byte@(p <Font Color=#B22222><B>- 8</b></font>)
 
   
 
   
 
  End
 
  End
Se la viariabile, di cui trovare il numero identificatore del tipo tipo di dato, è una ''Struttura'', allora avremo:
+
Se la variabile, di cui trovare il numero identificatore del tipo di dato, è una ''Struttura'', allora avremo:
 
  Public Struct Struttura
 
  Public Struct Struttura
 
   b As Byte
 
   b As Byte
Riga 18: Riga 29:
 
  End Struct
 
  End Struct
 
   
 
   
  Private id As Struct Struttura
+
  Private id As Struct Struttura   <FONT Color=gray>' ''Ovviamente si può usare anche la parola-chiave "New"''</font>
 
   
 
   
 
   
 
   
Riga 30: Riga 41:
 
   
 
   
 
  End
 
  End
 +
 +
 +
 +
=Note=
 +
[1] Vedere anche la seguente pagina: [[TypeOf]]

Versione attuale delle 19:15, 9 nov 2024

Usando la funzione nativa di Gambas "TypeOf()"

Per conoscere il tipo di dato, al quale appartiene una variabile dichiarata nel codice, è sufficiente utilizzare la funzione nativa di Gambas: "TypeOf()".
In particolare questa funzione restituisce il numero identificativo del tipo di dati individuato all'interno dell'elenco presente nel file sorgente di Gambas

/home/[USER]/gambasdevel/main/share/gambas.h

o anche nel file sorgente di Gambas

User.Home &/ "main/share/gb_type_common.h"

e riscontrabile nelle Costanti di ritorno che rappresentano i tipi di dati. [Nota 1]

I tipi di dati non nativi di Gambas, come la Struttura, sono identificati semplicemente con il numero "16", che identifica il tipo "Object" (gb.Object ).

Usando l'indirizzo di memoria della variabile

Come già detto nel paragrafo precedente, nel file sorgente di Gambas "/home/[USER]/gambasdevel/main/share/gambas.h " è presente - quasi all'inizio - l'elenco dei numeri identificatore dei tipi di dati (Gambas datatypes identifiers ), previsti da Gambas.
Per conoscere a quale numero identificatore di tipo di dato appartiene una variabile dichiarata nel codice, si dovrà ottenere l'indirizzo di memoria di tale variabile e sottrarre a questo 8 unità come segue:

Public Sub Main()

 Dim p As Pointer
 Dim id As Short  ' Pone una variabile di tipo "Short" da verificare:

 p = VarPtr(id)

' Trova il numero identificatore del tipo di dato della variabile:
 Print "Gambas datatype identifier: "; Byte@(p - 8)

End

Se la variabile, di cui trovare il numero identificatore del tipo di dato, è una Struttura, allora avremo:

Public Struct Struttura
  b As Byte
  c As Short
End Struct

Private id As Struct Struttura   ' Ovviamente si può usare anche la parola-chiave "New"


Public Sub Main()

 Dim p As Pointer

 p = VarPtr(id)

 Print "Gambas datatype identifier: "; Byte@(p - 8)

End


Note

[1] Vedere anche la seguente pagina: TypeOf