{"id":747,"date":"2011-12-21T17:48:16","date_gmt":"2011-12-22T01:48:16","guid":{"rendered":"http:\/\/www.andreanolanusse.com\/en\/?p=747"},"modified":"2012-04-26T12:58:06","modified_gmt":"2012-04-26T19:58:06","slug":"android-apps-connected-to-cbuilder-datasnap-server","status":"publish","type":"post","link":"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/","title":{"rendered":"Android apps connected to C++Builder DataSnap Server"},"content":{"rendered":"<p>As part of the <a href=\"http:\/\/www.embarcadero.com\/31-days-of-december\" target=\"_blank\">31 days of RAD Studio XE2 Tutorials<\/a>, in today&#8217;s video I&#8217;m showing how you can create DataSnap REST Server in C++Builder, expose server methods and call them from an Android application. The video shows all the steps to create the server and the Android application.<\/p>\n<p><iframe loading=\"lazy\" src=\"http:\/\/www.youtube.com\/embed\/zXEuZNc60Hw\" frameborder=\"0\" width=\"480\" height=\"360\"><\/iframe><\/p>\n<p>This is a short recap of the video.<\/p>\n<p>In order to have other platforms connecting and interacting with your DataSnap Server you need to enable the REST Interface, and for mobile platforms you can use the DataSnap Connectors that generate proxy classes for Android, BlackBerry, Windows Phone and iOS. In the video I&#8217;m showing how to create the Server, let&#8217;s take a look at the Server Method implementation.<\/p>\n<p>The first server method called InsertCountry, connect on my InterBase database and add a new record to the Country table, see the implementation below:<\/p>\n<pre class=\"brush: cpp\">bool TServerMethods1::InsertCountry(String country, String currency,\r\n\tString &amp;error) {\r\n\tTDBXCommand *comm;\r\n\r\n\tbool result = false;\r\n\tDbConn-&gt;Open();\r\n\tcomm = DbConn-&gt;DBXConnection-&gt;CreateCommand();\r\n\tcomm-&gt;CommandType = TDBXCommandTypes_DbxSQL;\r\n\r\n\tTVarRec vr[] = {country, currency};\r\n\tcomm-&gt;Text =\r\n\t\tFormat(\"Insert Into Country (COUNTRY, CURRENCY) Values ( '%s', '%s')\", vr, 2);\r\n\r\n\tif (!comm-&gt;IsPrepared) {\r\n\t\tcomm-&gt;Prepare();\r\n\t}\r\n\r\n\ttry {\r\n\t\tcomm-&gt;ExecuteUpdate();\r\n\t\tresult = true;\r\n\r\n\t}\r\n\tcatch (Exception* e) {\r\n\t\terror = e-&gt;Message;\r\n\t}\r\n\tdelete comm;\r\n\treturn result;\r\n\r\n}<\/pre>\n<p>The second server method is called GetCountries, and returns all the records I have in the COUNTRY table on my InterBase database. This method returns a DBXReader and DataSnap will convert this automatically to JSON at the moment the Android app calls this method, but since we will use the new DataSnap Connector to generate the proxy class, we won&#8217;t need to handle the JSON object and I will explain that after.<\/p>\n<p>The following code represents the GetCountries implementation.<\/p>\n<pre class=\"brush: cpp\">TDBXReader* TServerMethods1::GetCountries() {\r\n\r\n\tTDBXCommand *comm;\r\n\r\n\ttry {\r\n\t\tDbConn-&gt;Open();\r\n\t\tcomm = DbConn-&gt;DBXConnection-&gt;CreateCommand();\r\n\t\tcomm-&gt;CommandType = TDBXCommandTypes_DbxSQL;\r\n\t\tcomm-&gt;Text = \"Select * from Country\";\r\n\r\n\t\tif (!comm-&gt;IsPrepared) {\r\n\t\t\tcomm-&gt;Prepare();\r\n\t\t}\r\n\t\treturn comm-&gt;ExecuteQuery();\r\n\t}\r\n\tcatch (Exception* e) {\r\n\t\treturn NULL;\r\n\t}\r\n}<\/pre>\n<p>The next step is to create the proxy class for Android using the DataSnap connectors, which is a new feature in C++Builder XE2. The generation can be done through command line or via HTTP request on your DataSnap server, and in the video I&#8217;m showing how to do that.<\/p>\n<p>The proxy generator generates only the DSProxy.java, all the other files part of the DataSnap Connectors are the representation of DataSnap Framework in Java, for example you won&#8217;t need to parse the DBXReader as JSON object in Java, just because we have the DBXReader class in Java and it parses the JSON object for you.<\/p>\n<p>The first step to create a REST connection with your DataSnap Server, which will give me a instance of DSRESTConnection. If your DataSnap Server requires authentication you can use the methods SetUserName and SetPassword to define the credentials.<\/p>\n<pre class=\"brush: java\">\tprivate DSRESTConnection getConnection() {\r\n\t\tDSRESTConnection conn = new DSRESTConnection();\r\n\t\tconn.setHost(\"192.168.254.128\");\r\n\t\tconn.setPort(8080);\r\n\t\treturn conn;\r\n\t}<\/pre>\n<p>Now, let&#8217;s take a look and see how to execute the server methods, starting with the InsertCountry method as you can see in the following code.<\/p>\n<p>After instantiation of the DSRESTConnection, we pass the REST connection object to the TServerMethods1&#8217;s instance, which is the client representation of TServerMethods1 on the server, and from there just call InsertCountry.<\/p>\n<p>Since InsertCountry returns Boolean and also the Error message parameter is passed as reference, InsertCountry methods will return a InsertCountryReturns, which is a static class with two parameters: error that represent the error message and returnValue which represent the value return by InsertCountry.<\/p>\n<pre class=\"brush: java\">protected void Insert() {\r\n\r\n\tDSRESTConnection conn = getConnection();\r\n\r\n\tTServerMethods1 sm = new TServerMethods1(conn);\r\n\r\n\ttry {\r\n\t\tInsertCountryReturns ret;\r\n\t\tret = sm.InsertCountry(editCountry.getText().toString(), editCurrency.getText().toString(), \"\");\r\n\r\n\t\tif ( ! ret.returnValue ) {\r\n\t\t\tSystem.out.println(ret.error);\r\n\t\t}\r\n\r\n\t} catch (DBXException e) {\r\n\t\te.printStackTrace();\r\n\t}\r\n\r\n\t\/\/ Hide keyboard\r\n\tInputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);\r\n\timm.hideSoftInputFromWindow(editCountry.getWindowToken(),0);\r\n\r\n}<\/pre>\n<p>The next method is GetCountries. We start as before by getting the DSRESTConnection instance. The GetCountries method returns a DBXReader and the way we work with the DBXReader class in Java is very similar the way we work in C++, use the Next method to interact through the result, and getValue\/GetAsXXXXX to get the column value. See the following code:<\/p>\n<pre class=\"brush: java\">protected void Refresh() {\r\n\r\n\tDSRESTConnection conn = getConnection();\r\n\r\n\tTServerMethods1 sm = new TServerMethods1(conn);\r\n\r\n\tTDBXReader reader;\r\n\ttry {\r\n\t\treader = sm.GetCountries();\r\n\r\n\t\tArrayList COUNTRIES = new ArrayList();\r\n\r\n\t\twhile (reader.next()) {\r\n\t\t\tCOUNTRIES.add(reader.getValue(\"COUNTRY\").GetAsString());\r\n\t\t}\r\n\r\n\t\t\/\/ Add the COUNTRIES array in to the list view\r\n\t\tlist.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, COUNTRIES));\r\n\r\n\t} catch (DBXException e) {\r\n\t\te.printStackTrace();\r\n\t}\r\n\r\n}<\/pre>\n<p>This is just a short tutorial explaining how to use DataSnap Connector with Android, take some time and watch the video where I&#8217;m going through more details.<\/p>\n<p>The source code is available for download <a href=\"http:\/\/cc.embarcadero.com\/download.aspx?id=28677\" target=\"_blank\">here<\/a>\u00a0and download the video from <a href=\"http:\/\/cc.embarcadero.com\/download.aspx?id=28678\" target=\"_blank\">here<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As part of the 31 days of RAD Studio XE2 Tutorials, in today&#8217;s video I&#8217;m showing how you can create DataSnap REST Server in C++Builder, expose server methods and call them from an Android application. The video shows all the steps to create the server and the Android application. This is a short recap of [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":752,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_s2mail":"yes","footnotes":""},"categories":[92,11],"tags":[45,93,21,17],"class_list":["post-747","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-android","category-cbuilder","tag-android","tag-cbuilder","tag-datasnap","tag-video"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Android apps connected to C++Builder DataSnap Server | Andreano Lanusse Blog | Technology and Software Development<\/title>\n<meta name=\"description\" content=\"In this tutorial Andreano Lanusse shows how to create REST Servers using C++ and DataSnap, and how to call them from Android applications.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Android apps connected to C++Builder DataSnap Server | Andreano Lanusse Blog | Technology and Software Development\" \/>\n<meta property=\"og:description\" content=\"In this tutorial Andreano Lanusse shows how to create REST Servers using C++ and DataSnap, and how to call them from Android applications.\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/\" \/>\n<meta property=\"og:site_name\" content=\"Andreano Lanusse | Technology and Software Development\" \/>\n<meta property=\"article:published_time\" content=\"2011-12-22T01:48:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2012-04-26T19:58:06+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2011\/12\/CBuilderAndroid.png\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"327\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Andreano Lanusse\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andreano Lanusse\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/\"},\"author\":{\"name\":\"Andreano Lanusse\",\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b\"},\"headline\":\"Android apps connected to C++Builder DataSnap Server\",\"datePublished\":\"2011-12-22T01:48:16+00:00\",\"dateModified\":\"2012-04-26T19:58:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/\"},\"wordCount\":584,\"commentCount\":8,\"publisher\":{\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b\"},\"image\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2011\/12\/CBuilderAndroid.png\",\"keywords\":[\"Android\",\"C++Builder\",\"DataSnap\",\"Video\"],\"articleSection\":[\"Android\",\"C++Builder\"],\"inLanguage\":\"en\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/\",\"url\":\"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/\",\"name\":\"Android apps connected to C++Builder DataSnap Server | Andreano Lanusse Blog | Technology and Software Development\",\"isPartOf\":{\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/#primaryimage\"},\"image\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2011\/12\/CBuilderAndroid.png\",\"datePublished\":\"2011-12-22T01:48:16+00:00\",\"dateModified\":\"2012-04-26T19:58:06+00:00\",\"description\":\"In this tutorial Andreano Lanusse shows how to create REST Servers using C++ and DataSnap, and how to call them from Android applications.\",\"breadcrumb\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/#breadcrumb\"},\"inLanguage\":\"en\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en\",\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/#primaryimage\",\"url\":\"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2011\/12\/CBuilderAndroid.png\",\"contentUrl\":\"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2011\/12\/CBuilderAndroid.png\",\"width\":800,\"height\":327},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.andreanolanusse.com\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Android apps connected to C++Builder DataSnap Server\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#website\",\"url\":\"https:\/\/www.andreanolanusse.com\/en\/\",\"name\":\"Andreano Lanusse | Technology and Software Development\",\"description\":\"Where Andreano Lanusse talk about technology, software development, programming techniques, databases, games and more through articles, tutorials and videos\",\"publisher\":{\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.andreanolanusse.com\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b\",\"name\":\"Andreano Lanusse\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en\",\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/49ab23ef70c249c0cb3469f14ef07edc?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/49ab23ef70c249c0cb3469f14ef07edc?s=96&d=mm&r=g\",\"caption\":\"Andreano Lanusse\"},\"logo\":{\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/image\/\"},\"description\":\"Andreano Lanusse is an expert and enthusiastic on software development industry, at Embarcadero he is focused on helping to make sure the products being developed meet the expectations of Embarcadero's customers, as well as defining market strategies for Latin America. Today as Latin Lead Evangelist he spends great deal of time in developer conferences, tradeshows, user group, and visiting customers throughout Latin America. Before Embarcadero, he worked 13 years for Borland, Andreano has worked as Support Coordinator, Engineer, Product Manager, including Product Line Sales Manager, where was responsible to manage the relationship with Brazil developer community, also has worked as Principal Consultant for Borland Consulting Services on the development and management of critical applications. He previously served as Chief Architect for USS Solu\u00e7\u00f5es Gerenciadas (now USS Tempo). Andreano holds a bachelor's degree in Business Administration Marketing Emphasis from Sumare Institute, MBA in Project Management from FGV, certification in Microsoft products, all Borland ALM products, and all CodeGear product line.\",\"sameAs\":[\"http:\/\/www.andreanolanusse.com\",\"https:\/\/x.com\/andreanolanusse\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Android apps connected to C++Builder DataSnap Server | Andreano Lanusse Blog | Technology and Software Development","description":"In this tutorial Andreano Lanusse shows how to create REST Servers using C++ and DataSnap, and how to call them from Android applications.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/","og_locale":"en_US","og_type":"article","og_title":"Android apps connected to C++Builder DataSnap Server | Andreano Lanusse Blog | Technology and Software Development","og_description":"In this tutorial Andreano Lanusse shows how to create REST Servers using C++ and DataSnap, and how to call them from Android applications.","og_url":"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/","og_site_name":"Andreano Lanusse | Technology and Software Development","article_published_time":"2011-12-22T01:48:16+00:00","article_modified_time":"2012-04-26T19:58:06+00:00","og_image":[{"width":800,"height":327,"url":"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2011\/12\/CBuilderAndroid.png","type":"image\/png"}],"author":"Andreano Lanusse","twitter_misc":{"Written by":"Andreano Lanusse","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/#article","isPartOf":{"@id":"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/"},"author":{"name":"Andreano Lanusse","@id":"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b"},"headline":"Android apps connected to C++Builder DataSnap Server","datePublished":"2011-12-22T01:48:16+00:00","dateModified":"2012-04-26T19:58:06+00:00","mainEntityOfPage":{"@id":"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/"},"wordCount":584,"commentCount":8,"publisher":{"@id":"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b"},"image":{"@id":"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/#primaryimage"},"thumbnailUrl":"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2011\/12\/CBuilderAndroid.png","keywords":["Android","C++Builder","DataSnap","Video"],"articleSection":["Android","C++Builder"],"inLanguage":"en","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/#respond"]}]},{"@type":"WebPage","@id":"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/","url":"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/","name":"Android apps connected to C++Builder DataSnap Server | Andreano Lanusse Blog | Technology and Software Development","isPartOf":{"@id":"https:\/\/www.andreanolanusse.com\/en\/#website"},"primaryImageOfPage":{"@id":"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/#primaryimage"},"image":{"@id":"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/#primaryimage"},"thumbnailUrl":"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2011\/12\/CBuilderAndroid.png","datePublished":"2011-12-22T01:48:16+00:00","dateModified":"2012-04-26T19:58:06+00:00","description":"In this tutorial Andreano Lanusse shows how to create REST Servers using C++ and DataSnap, and how to call them from Android applications.","breadcrumb":{"@id":"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/#breadcrumb"},"inLanguage":"en","potentialAction":[{"@type":"ReadAction","target":["http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/"]}]},{"@type":"ImageObject","inLanguage":"en","@id":"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/#primaryimage","url":"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2011\/12\/CBuilderAndroid.png","contentUrl":"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2011\/12\/CBuilderAndroid.png","width":800,"height":327},{"@type":"BreadcrumbList","@id":"http:\/\/www.andreanolanusse.com\/en\/android-apps-connected-to-cbuilder-datasnap-server\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.andreanolanusse.com\/en\/"},{"@type":"ListItem","position":2,"name":"Android apps connected to C++Builder DataSnap Server"}]},{"@type":"WebSite","@id":"https:\/\/www.andreanolanusse.com\/en\/#website","url":"https:\/\/www.andreanolanusse.com\/en\/","name":"Andreano Lanusse | Technology and Software Development","description":"Where Andreano Lanusse talk about technology, software development, programming techniques, databases, games and more through articles, tutorials and videos","publisher":{"@id":"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.andreanolanusse.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en"},{"@type":["Person","Organization"],"@id":"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b","name":"Andreano Lanusse","image":{"@type":"ImageObject","inLanguage":"en","@id":"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/49ab23ef70c249c0cb3469f14ef07edc?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/49ab23ef70c249c0cb3469f14ef07edc?s=96&d=mm&r=g","caption":"Andreano Lanusse"},"logo":{"@id":"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/image\/"},"description":"Andreano Lanusse is an expert and enthusiastic on software development industry, at Embarcadero he is focused on helping to make sure the products being developed meet the expectations of Embarcadero's customers, as well as defining market strategies for Latin America. Today as Latin Lead Evangelist he spends great deal of time in developer conferences, tradeshows, user group, and visiting customers throughout Latin America. Before Embarcadero, he worked 13 years for Borland, Andreano has worked as Support Coordinator, Engineer, Product Manager, including Product Line Sales Manager, where was responsible to manage the relationship with Brazil developer community, also has worked as Principal Consultant for Borland Consulting Services on the development and management of critical applications. He previously served as Chief Architect for USS Solu\u00e7\u00f5es Gerenciadas (now USS Tempo). Andreano holds a bachelor's degree in Business Administration Marketing Emphasis from Sumare Institute, MBA in Project Management from FGV, certification in Microsoft products, all Borland ALM products, and all CodeGear product line.","sameAs":["http:\/\/www.andreanolanusse.com","https:\/\/x.com\/andreanolanusse"]}]}},"_links":{"self":[{"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/posts\/747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/comments?post=747"}],"version-history":[{"count":0,"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/posts\/747\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/media\/752"}],"wp:attachment":[{"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/media?parent=747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/categories?post=747"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/tags?post=747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}