[Gambas-user] Answer to: "Way to tell if an object is a struct"

vuott at tutanota.com vuott at tutanota.com
Wed Apr 5 18:04:38 CEST 2023


On this thread
   https://lists.gambas-basic.org/pipermail/user/2023-March/078862.html
Brian G asked, if it were possible to know if an Object is a Structure.
In Gambas source file 
   /home/[USER]/gambasdevel/main/share/gambas.h
the numbers of datatypes identifiers are listed.
Therefore, by knowing which number a declared variable belongs to, it is possible to know its data type.
I found a way to know, from the memory address of the variable it is necessary to go back 8 units. Deferencing the Pointer will give the identifier number of the data type of the variable, which consequently will have to be compared with the list above.

This is my simply code:

[code]
Public Struct Struttura
  b As Byte
  c As Short
End Struct

Private id As Struct Struttura


Public Sub Main()

Dim p As Pointer

p = VarPtr(id)

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

End
[/code]

It should be noted that in the list of data-type identifier numbers, in particular, the data type Structure is NOT present.
It will be located and reported by my code as an "Object" (number: 16)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20230405/c6c88172/attachment.htm>


More information about the User mailing list