How to figure the type of a variable?

Andre Garzia soapdog at mac.com
Sun Jul 11 20:49:07 EDT 2004


Hi folks,

I am trying to build a routine to check what is the type of a variable 
so that I can generate XML-RPC Parameters. I am using a switch 
structure I pasted below. The problem is, when executing the handler 
like:  xmlRPCCall "http://someurl", "somemethod", "andre", 1, 
"10/06/98"  all parameters evaluate to string even the date and the 
number... the snipet that deals with strings is the "default" part of 
the switch, I thought, if it ain't a date, bool, int or float then it 
must be a string, but, everything turns to be a string... any clues?

PS: yes, I am using those nice functions made by Sarah :D


if the paramCount > 2 then
     addNewXMLElement tTreeID, "/methodCall", "params", ""
     repeat with x = 3 to the paramCount
       put x - 2 into tNum

       switch (param(x))
       case (param(x) is a integer)
         addNewXMLElement tTreeID, "/methodCall/params/", "param", ""
         addNewXMLElement tTreeID, 
replaceText("/methodCall/params/param[tNum]", "tNum", tNum), "value", 
""
         addNewXMLElement tTreeID, 
replaceText("/methodCall/params/param[tNum]/value", "tNum", tNum), 
"int", param(x)
         break

       case (param(x) is a number)
          addNewXMLElement tTreeID, "/methodCall/params/", "param", ""
         addNewXMLElement tTreeID, 
replaceText("/methodCall/params/param[tNum]", "tNum", tNum), "value", 
""
         addNewXMLElement tTreeID, 
replaceText("/methodCall/params/param[tNum]/value", "tNum", tNum), 
"float", param(x)
         break

       case (param(x) is a boolean)
         addNewXMLElement tTreeID, "/methodCall/params/", "param", ""
         addNewXMLElement tTreeID, 
replaceText("/methodCall/params/param[tNum]", "tNum", tNum), "value", 
""
         addNewXMLElement tTreeID, 
replaceText("/methodCall/params/param[tNum]/value", "tNum", tNum), 
"boolean", param(x)
         break

       case (param(x) is a date)
         addNewXMLElement tTreeID, "/methodCall/params/", "param", ""
         addNewXMLElement tTreeID, 
replaceText("/methodCall/params/param[tNum]", "tNum", tNum), "value", 
""
         addNewXMLElement tTreeID, 
replaceText("/methodCall/params/param[tNum]/value", "tNum", tNum), 
"date", param(x)
         break

       default
         addNewXMLElement tTreeID, "/methodCall/params/", "param", ""
         addNewXMLElement tTreeID, 
replaceText("/methodCall/params/param[tNum]", "tNum", tNum), "value", 
""
         addNewXMLElement tTreeID, 
replaceText("/methodCall/params/param[tNum]/value", "tNum", tNum), 
"string", param(x)
         break






         break
       end switch
     end repeat
   end if


-- 
Andre Alves Garzia ð 2004
Soap Dog Studios - BRAZIL
http://studio.soapdog.org


More information about the use-livecode mailing list