LogicMachine Forum
Easiest way to get datatype string - Printable Version

+- LogicMachine Forum (https://forum.logicmachine.net)
+-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1)
+--- Forum: Scripting (https://forum.logicmachine.net/forumdisplay.php?fid=8)
+--- Thread: Easiest way to get datatype string (/showthread.php?tid=4146)



Easiest way to get datatype string - Hadeel - 13.07.2022

Hi !
I want to get a datatype of each object as "dt.bool" or "dt.bit2".

When I use the function grp.find('0/1/0').datatype,  it gives me a number like 1, 2, not a datatype string.
Is there a mapping table somewhere so that I can get a datatype string as "dt.bool" or "dt.bit2" ?
For now I am trying to create a mapping table like this below but I am not sure if all of them are correct.
Is there any other way?


Code:
local convertToString = {     [1] = "dt.bool",     [2] = "dt.bit2",     [3] = "dt.bit4",     [4] = "dt.char",     [5] = "dt.uint8",     [6] = "dt.int8",     [7] = "dt.uint16",     [8] = "dt.int16",     [9] = "dt.float16",     [10] = "dt.time",     [11] = "dt.date",     [12] = "dt.uint32",     [13] = "dt.int32",     [14] = "dt.float32",     [15] = "dt.access",     [16] = "dt.string", }



RE: Easiest way to get datatype string - admin - 13.07.2022

Use this example. It also handles sub-datatypes which don't have a dt table entry (e.g. 01.011 -> dt.bool).
Code:
mapping = {} for key, value in pairs(dt) do   mapping[ value ] = 'dt.' .. key end obj = grp.find('1/1/2') dpt = obj.datatype if dpt then   dtname = mapping[ dpt ]   if not dtname and dpt >= 1000 then     dtname = mapping[ math.floor(dpt / 1000) ]   end end log(dtname)



RE: Easiest way to get datatype string - Hadeel - 13.07.2022

Thank you very very much admin !!

It's working perfect (: