<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Andreano Lanusse &#124; Technology and Software Development &#187; Delphi</title>
	<atom:link href="http://www.andreanolanusse.com/en/tag/delphi/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.andreanolanusse.com/en</link>
	<description>Where Andreano Lanusse talk about technology, software development, programming techniques, databases, games and more through articles, tutorials and videos</description>
	<lastBuildDate>Sat, 04 Feb 2012 01:01:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>FireMonkey 3D Text Editor</title>
		<link>http://www.andreanolanusse.com/en/firemonkey-3d-text-editor/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=firemonkey-3d-text-editor</link>
		<comments>http://www.andreanolanusse.com/en/firemonkey-3d-text-editor/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 00:58:59 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Embarcadero]]></category>
		<category><![CDATA[FireMonkey]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/en/?p=782</guid>
		<description><![CDATA[<p>If you want to learn more about FireMonkey 3D applications, join me on February 14th for the Delphi Birthday Celebration webinar. During this webinar we will have several Delphi experts and members of our R&#38;D team showing great technologies using Delphi. I will be there as well showing something that I have been working for a [...]</p><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>If you want to learn more about <a href="http://www.embarcadero.com/products/firemonkey" target="_blank">FireMonkey</a> 3D applications, join me on February 14th for the <a href="http://forms.embarcadero.com/forms/AMUSCA1202DelphiBDayCelebration2-14" target="_blank">Delphi Birthday Celebration webinar</a>.</p>
<p>During this webinar we will have several Delphi experts and members of our R&amp;D team showing great technologies using Delphi. I will be there as well showing something that I have been working for a while, the FireMonkey 3D Text Editor, during the webinar I will show you how it was created and share many tips &amp; tricks related with FireMonkey development.</p>
<p>Bellow some screen shots of what I&#8217;m planning to show:</p>
<div id="attachment_783" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.andreanolanusse.com/en/wp-content/uploads/2012/02/3DEditor-IDE.png"><img class="size-medium wp-image-783 " title="3D Text Editor in the IDE" src="http://www.andreanolanusse.com/en/wp-content/uploads/2012/02/3DEditor-IDE-300x187.png" alt="" width="300" height="187" /></a><p class="wp-caption-text">3D Text Editor in the IDE</p></div>
<p>&nbsp;</p>
<div id="attachment_784" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.andreanolanusse.com/en/wp-content/uploads/2012/02/3DEditor-App.png"><img class="size-medium wp-image-784" title="The 3D Text Editor running on Windows" src="http://www.andreanolanusse.com/en/wp-content/uploads/2012/02/3DEditor-App-300x187.png" alt="" width="300" height="187" /></a><p class="wp-caption-text">The 3D Text Editor running on Windows, it runs on Mac as well <img src='http://www.andreanolanusse.com/en/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p></div>
<p>&nbsp;</p>
<div id="attachment_785" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.andreanolanusse.com/en/wp-content/uploads/2012/02/3D-exported-image.png"><img class="size-medium wp-image-785" title="Image generated by the 3D Text Editor" src="http://www.andreanolanusse.com/en/wp-content/uploads/2012/02/3D-exported-image-300x158.png" alt="" width="300" height="158" /></a><p class="wp-caption-text">Image generated by the 3D Text Editor</p></div>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/en/android-apps-connected-to-delphi-datasnap-server/" title="Android apps connected to Delphi DataSnap Server">Android apps connected to Delphi DataSnap Server</a></li><li><a href="http://www.andreanolanusse.com/en/using-regular-expression-on-cbuilder-firemonkey-application/" title="Using Regular Expression on C++Builder FireMonkey Application">Using Regular Expression on C++Builder FireMonkey Application</a></li><li><a href="http://www.andreanolanusse.com/en/using-dbexpress-framework-on-windows-and-mac-with-cbuilder/" title="Using dbExpress Framework on Windows and Mac with C++Builder">Using dbExpress Framework on Windows and Mac with C++Builder</a></li><li><a href="http://www.andreanolanusse.com/en/connecting-to-postgresql-through-dbexpress-odbc-driver/" title="Connecting to PostgreSQL through dbExpress ODBC driver">Connecting to PostgreSQL through dbExpress ODBC driver</a></li><li><a href="http://www.andreanolanusse.com/en/creating-xml-files-with-delphi-and-firemonkey-on-mac/" title="Creating XML files with Delphi and FireMonkey on Mac">Creating XML files with Delphi and FireMonkey on Mac</a></li><li><a href="http://www.andreanolanusse.com/en/video-delphi-xe2-and-firemonkey-app-on-windows-mac-and-ios/" title="Video: Delphi XE2 and FireMonkey app on Windows, Mac and iOS">Video: Delphi XE2 and FireMonkey app on Windows, Mac and iOS</a></li></ul><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/en/firemonkey-3d-text-editor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android apps connected to Delphi DataSnap Server</title>
		<link>http://www.andreanolanusse.com/en/android-apps-connected-to-delphi-datasnap-server/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=android-apps-connected-to-delphi-datasnap-server</link>
		<comments>http://www.andreanolanusse.com/en/android-apps-connected-to-delphi-datasnap-server/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 08:15:55 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[DataSnap]]></category>
		<category><![CDATA[Embarcadero]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/en/?p=771</guid>
		<description><![CDATA[<p>On the following video I&#8217;m showing how you can create DataSnap REST Server in Delphi, 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 the video. In order to have other platforms connecting and [...]</p><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>On the following video I&#8217;m showing how you can create DataSnap REST Server in Delphi, 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>
<p><iframe width="480" height="360" src="http://www.youtube.com/embed/0pM6VjZGqLA" frameborder="0" allowfullscreen></iframe><br />
This is a short recap of the video.</p>
<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>
<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>
<pre class="brush: delphi">function TServerMethods1.InsertCountry(Country, Currency: String;
  out Error: String): Boolean;
var
  Comm: TDBXCommand;
begin

  Result := False;

  DBConn.Open;
  Comm := DBConn.DBXConnection.CreateCommand;
  Comm.CommandType := TDBXCommandTypes.DbxSQL;
  Comm.Text :=
    Format('Insert Into Country (COUNTRY, CURRENCY) Values ( ''%s'', ''%s'')',
    [Country, Currency]);

  if not Comm.IsPrepared then
    Comm.Prepare;

  try
    Comm.ExecuteUpdate;
    Comm.Free;
    Result := True;
  except on E: Exception do
    Error := E.Message;
  end;

end;</pre>
<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>
<p>The following code represents the GetCountries implementation.</p>
<pre class="brush: delphi">
function TServerMethods1.GetCountries: TDBXReader;
var
  Comm: TDBXCommand;
begin

  DBConn.Open;
  Comm := DBConn.DBXConnection.CreateCommand;
  Comm.CommandType := TDBXCommandTypes.DbxSQL;
  Comm.Text := 'Select * from Country';

  if not Comm.IsPrepared then
    Comm.Prepare;

  Result := Comm.ExecuteQuery;

end;
</pre>
<p>The next step is to create the proxy class for Android using the DataSnap connectors, which is a new feature in Delphi 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>
<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>
<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>
<pre class="brush: java">	private DSRESTConnection getConnection() {
		DSRESTConnection conn = new DSRESTConnection();
		conn.setHost("192.168.254.128");
		conn.setPort(8080);
		return conn;
	}</pre>
<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>
<p>After instantiation of the DSRESTConnection, we pass the REST connection object to the TServerMethods1&#8242;s instance, which is the client representation of TServerMethods1 on the server, and from there just call InsertCountry.</p>
<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>
<pre class="brush: java">protected void Insert() {

	DSRESTConnection conn = getConnection();

	TServerMethods1 sm = new TServerMethods1(conn);

	try {
		InsertCountryReturns ret;
		ret = sm.InsertCountry(editCountry.getText().toString(), editCurrency.getText().toString(), "");

		if ( ! ret.returnValue ) {
			System.out.println(ret.error);
		}

	} catch (DBXException e) {
		e.printStackTrace();
	}

	// Hide keyboard
	InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
	imm.hideSoftInputFromWindow(editCountry.getWindowToken(),0);

}</pre>
<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 Delphi, use the Next method to interact through the result, and getValue/GetAsXXXXX to get the column value. See the following code:</p>
<pre class="brush: java">protected void Refresh() {

	DSRESTConnection conn = getConnection();

	TServerMethods1 sm = new TServerMethods1(conn);

	TDBXReader reader;
	try {
		reader = sm.GetCountries();

		ArrayList COUNTRIES = new ArrayList();

		while (reader.next()) {
			COUNTRIES.add(reader.getValue("COUNTRY").GetAsString());
		}

		// Add the COUNTRIES array in to the list view
		list.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, COUNTRIES));

	} catch (DBXException e) {
		e.printStackTrace();
	}

}</pre>
<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>
<p>The source code is available for download <a href="http://cc.embarcadero.com/download.aspx?id=28682" target="_blank">here</a> and download the video from <a href="http://cc.embarcadero.com/download.aspx?id=28683" target="_blank">here</a>.</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/en/video-connecting-android-applications-with-datasnap-server-delphi-conference-brazil-2010/" title="Video: Connecting Android applications with DataSnap Server – Delphi Conference Brazil 2010">Video: Connecting Android applications with DataSnap Server – Delphi Conference Brazil 2010</a></li><li><a href="http://www.andreanolanusse.com/en/firemonkey-3d-text-editor/" title="FireMonkey 3D Text Editor">FireMonkey 3D Text Editor</a></li><li><a href="http://www.andreanolanusse.com/en/android-apps-connected-to-cbuilder-datasnap-server/" title="Android apps connected to C++Builder DataSnap Server">Android apps connected to C++Builder DataSnap Server</a></li><li><a href="http://www.andreanolanusse.com/en/copyreadertoclientdataset-blob-and-the-message-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob and the message &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob and the message &#8220;Feature not implemented&#8221;</a></li><li><a href="http://www.andreanolanusse.com/en/publishing-providers-when-registering-datasnap-server-class-in-runtime/" title="Publishing providers when registering DataSnap Server Class in runtime">Publishing providers when registering DataSnap Server Class in runtime</a></li><li><a href="http://www.andreanolanusse.com/en/caching-data-on-datasnap-server/" title="Caching data on DataSnap Server">Caching data on DataSnap Server</a></li></ul><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/en/android-apps-connected-to-delphi-datasnap-server/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>It&#8217;s time to move on</title>
		<link>http://www.andreanolanusse.com/en/its-time-to-move-on/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=its-time-to-move-on</link>
		<comments>http://www.andreanolanusse.com/en/its-time-to-move-on/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 06:31:18 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/en/?p=744</guid>
		<description><![CDATA[<p>Hi everyone, there are certain things we cannot let go and need to be mention. During the whole year I try to keep my blog posts about software development and other related technologies, but this time I need to mention what is going on here at Embarcadero. Upgrading to Delphi XE2, C++Builder XE2 or RAD [...]</p><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Hi everyone, there are certain things we cannot let go and need to be mention. During the whole year I try to keep my blog posts about software development and other related technologies, but this time I need to mention what is going on here at Embarcadero. Upgrading to <a href="http://www.embarcadero.com/products/delphi" target="_blank">Delphi XE2</a>, <a href="http://www.embarcadero.com/products/cbuilder" target="_blank">C++Builder XE2</a> or <a href="http://www.embarcadero.com/products/rad-studio" target="_blank">RAD Studio XE2</a> by December 30, 2011, you can get up to $2,935 (USD) in additional tools free! Also you are eligible to take one <a href="http://www.embarcadero.com/certification">Delphi Developer Certification</a> test free of charge.</p>
<table width="80%" border="1" cellspacing="0" cellpadding="5">
<tbody>
<tr>
<td align="left"><strong>Buy Delphi, C++Builder or RAD Studio XE2&#8230;</strong></td>
<td align="left"><strong>And receive the following FREE!!!</strong></td>
</tr>
<tr>
<td align="left">Professional edition</td>
<td align="left">
<ul>
<li>Rapid SQL XE2 – FREE!</li>
<li>FastCube – FREE!</li>
<li>One Delphi Developer Certification &#8211; FREE!</li>
</ul>
</td>
</tr>
<tr>
<td align="left">Enterprise edition</td>
<td align="left">
<ul>
<li>Rapid SQL XE2 – FREE!</li>
<li>FastCube – FREE!</li>
<li>DB Optimizer &#8211; FREE!</li>
<li>One Delphi Developer Certification &#8211; FREE!</li>
</ul>
</td>
</tr>
<tr>
<td align="left">Architect edition</td>
<td align="left">
<ul>
<li>Rapid SQL XE2 – FREE!</li>
<li>FastCube – FREE!</li>
<li>DB Optimizer &#8211; FREE!</li>
<li>DB Change Manager &#8211; FREE!</li>
<li>One Delphi Developer Certification &#8211; FREE!</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>Recently I published the White Paper <a title="White Paper: Reasons to Migrate to Delphi XE2 | What you might have missed since Delphi 7" href="http://www.andreanolanusse.com/en/white-paper-reasons-to-migrate-to-delphi-xe2-what-you-might-have-missed-since-delphi-7/">&#8220;Reasons to Migrate to Delphi XE2 | What you might have missed since Delphi 7&#8243;</a> and can help you to decide to upgrade to XE2.</p>
<p>Remember, this offer expire on December 30, 2011 and you can have more information <a href="http://www.embarcadero.com/radoffer" target="_blank">here</a>.</p>
<p>It&#8217;s time to move on <img src='http://www.andreanolanusse.com/en/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/en/copyreadertoclientdataset-blob-and-the-message-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob and the message &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob and the message &#8220;Feature not implemented&#8221;</a></li><li><a href="http://www.andreanolanusse.com/en/connecting-to-postgresql-through-dbexpress-odbc-driver/" title="Connecting to PostgreSQL through dbExpress ODBC driver">Connecting to PostgreSQL through dbExpress ODBC driver</a></li><li><a href="http://www.andreanolanusse.com/en/update-2-for-delphi-xe2-cbuilder-xe2-and-radphp-xe2-available/" title="Update 2 for Delphi XE2, C++Builder XE2 and RadPHP XE2 available">Update 2 for Delphi XE2, C++Builder XE2 and RadPHP XE2 available</a></li><li><a href="http://www.andreanolanusse.com/en/trial-datasheet-feature-matrix-and-faq-for-xe2-release-available/" title="Trial, Datasheet, Feature Matrix and FAQ for XE2 release available">Trial, Datasheet, Feature Matrix and FAQ for XE2 release available</a></li><li><a href="http://www.andreanolanusse.com/en/a-little-bit-about-firemonkey-and-delphi-xe2/" title="A little bit about FireMonkey and Delphi XE2">A little bit about FireMonkey and Delphi XE2</a></li><li><a href="http://www.andreanolanusse.com/en/rad-studio-xe2-a-new-era-for-delphi-and-cbuilder-developers/" title="RAD Studio XE2 a new era for Delphi and C++Builder Developers">RAD Studio XE2 a new era for Delphi and C++Builder Developers</a></li></ul><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/en/its-time-to-move-on/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>700 Delphi Developers at Delphi Conference Brazil</title>
		<link>http://www.andreanolanusse.com/en/700-delphi-developers-at-delphi-conference-brazil/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=700-delphi-developers-at-delphi-conference-brazil</link>
		<comments>http://www.andreanolanusse.com/en/700-delphi-developers-at-delphi-conference-brazil/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 15:43:51 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/en/?p=736</guid>
		<description><![CDATA[<p>We are so excited here in Brazil at Delphi Conference 2011, around 700 Delphi Developers learning about all the great stuffs in Delphi. David, Jim and I are here at the Conference talking with customers, community members and our partners. Related PostsFireMonkey 3D Text EditorAndroid apps connected to Delphi DataSnap ServerIt&#8217;s time to move onWhite [...]</p><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>We are so excited here in Brazil at Delphi Conference 2011, around 700 Delphi Developers learning about all the great stuffs in Delphi.</p>
<p>David, Jim and I are here at the Conference talking with customers, community members and our partners.</p>
<p><a href="http://www.andreanolanusse.com/en/wp-content/uploads/2011/11/DC2011.jpg"><img class="alignleft size-large wp-image-737" title="Delphi Conference 2011" src="http://www.andreanolanusse.com/en/wp-content/uploads/2011/11/DC2011-1024x678.jpg" alt="" width="717" height="475" /></a></p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/en/firemonkey-3d-text-editor/" title="FireMonkey 3D Text Editor">FireMonkey 3D Text Editor</a></li><li><a href="http://www.andreanolanusse.com/en/android-apps-connected-to-delphi-datasnap-server/" title="Android apps connected to Delphi DataSnap Server">Android apps connected to Delphi DataSnap Server</a></li><li><a href="http://www.andreanolanusse.com/en/its-time-to-move-on/" title="It&#8217;s time to move on">It&#8217;s time to move on</a></li><li><a href="http://www.andreanolanusse.com/en/white-paper-reasons-to-migrate-to-delphi-xe2-what-you-might-have-missed-since-delphi-7/" title="White Paper: Reasons to Migrate to Delphi XE2 | What you might have missed since Delphi 7">White Paper: Reasons to Migrate to Delphi XE2 | What you might have missed since Delphi 7</a></li><li><a href="http://www.andreanolanusse.com/en/copyreadertoclientdataset-blob-and-the-message-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob and the message &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob and the message &#8220;Feature not implemented&#8221;</a></li><li><a href="http://www.andreanolanusse.com/en/connecting-to-postgresql-through-dbexpress-odbc-driver/" title="Connecting to PostgreSQL through dbExpress ODBC driver">Connecting to PostgreSQL through dbExpress ODBC driver</a></li></ul><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/en/700-delphi-developers-at-delphi-conference-brazil/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>White Paper: Reasons to Migrate to Delphi XE2 &#124; What you might have missed since Delphi 7</title>
		<link>http://www.andreanolanusse.com/en/white-paper-reasons-to-migrate-to-delphi-xe2-what-you-might-have-missed-since-delphi-7/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=white-paper-reasons-to-migrate-to-delphi-xe2-what-you-might-have-missed-since-delphi-7</link>
		<comments>http://www.andreanolanusse.com/en/white-paper-reasons-to-migrate-to-delphi-xe2-what-you-might-have-missed-since-delphi-7/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 23:16:39 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/en/?p=731</guid>
		<description><![CDATA[<p>If you still using Delphi 7 or past versions, I highly recommend you to reserve sometime to read this article. Delphi has really grown with some truly cool things getting added in the time since the Delphi 7. This article gives a few good reasons to migrate, along with an overview of all the new [...]</p><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://cc.embarcadero.com/download.aspx?id=28627" target="_blank"><img class="alignleft size-medium wp-image-733" style="border-style: initial; border-color: initial; border-width: 0px; margin: 4px;" title="Download the White Paper: Reasons to migrate to Delphi XE2" src="http://www.andreanolanusse.com/en/wp-content/uploads/2011/11/Reasons_to_migrate_to_DelphiXE2-Cover-232x300.png" alt="" width="232" height="300" /></a></p>
<p>If you still using Delphi 7 or past versions, I highly recommend you to reserve sometime to read this article. Delphi has really grown with some truly cool things getting added in the time since the Delphi 7.</p>
<p>This article gives a few good reasons to migrate, along with an overview of all the new features added to Delphi product releases since version 7, where Delphi was an IDE to build Windows 32-bit applications and became an IDE for Windows 64-bit, Mac and iOS development.</p>
<p>If you already read my article &#8220;Reasons to migrate from Delphi 7 to Delphi 2009&#8243; or &#8220;Reasons to migrate to Delphi XE&#8221;, this is the updated version including Delphi 2010, XE and XE2 new features.</p>
<p>I would like to remind you that migrating to Delphi XE2 gives you access to <a href="http://www.embarcadero.com/products/rad-studio/previous-versions">earlier versions</a> at no extra cost. For example buying Delphi XE2 also gets you Delphi 7, Delphi 2007, Delphi 2009, Delphi 2010 and Delphi XE.</p>
<p>I hope this article answer all of your question, any additional question let us know how.</p>
<p>Article <a href="http://cc.embarcadero.com/download.aspx?id=28627" target="_blank"><strong>download</strong></a>.</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/en/firemonkey-3d-text-editor/" title="FireMonkey 3D Text Editor">FireMonkey 3D Text Editor</a></li><li><a href="http://www.andreanolanusse.com/en/android-apps-connected-to-delphi-datasnap-server/" title="Android apps connected to Delphi DataSnap Server">Android apps connected to Delphi DataSnap Server</a></li><li><a href="http://www.andreanolanusse.com/en/its-time-to-move-on/" title="It&#8217;s time to move on">It&#8217;s time to move on</a></li><li><a href="http://www.andreanolanusse.com/en/700-delphi-developers-at-delphi-conference-brazil/" title="700 Delphi Developers at Delphi Conference Brazil">700 Delphi Developers at Delphi Conference Brazil</a></li><li><a href="http://www.andreanolanusse.com/en/copyreadertoclientdataset-blob-and-the-message-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob and the message &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob and the message &#8220;Feature not implemented&#8221;</a></li><li><a href="http://www.andreanolanusse.com/en/connecting-to-postgresql-through-dbexpress-odbc-driver/" title="Connecting to PostgreSQL through dbExpress ODBC driver">Connecting to PostgreSQL through dbExpress ODBC driver</a></li></ul><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/en/white-paper-reasons-to-migrate-to-delphi-xe2-what-you-might-have-missed-since-delphi-7/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>CopyReaderToClientDataSet, Blob and the message &#8220;Feature not implemented&#8221;</title>
		<link>http://www.andreanolanusse.com/en/copyreadertoclientdataset-blob-and-the-message-feature-not-implemented/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=copyreadertoclientdataset-blob-and-the-message-feature-not-implemented</link>
		<comments>http://www.andreanolanusse.com/en/copyreadertoclientdataset-blob-and-the-message-feature-not-implemented/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 00:25:18 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[DataSnap]]></category>
		<category><![CDATA[dbExpress]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/en/?p=729</guid>
		<description><![CDATA[<p>If you have used the method TDBXDataSetReader.CopyReaderToClientDataSet, you probably came across with the message &#8220;Feature not implemented&#8221;, this exception occurs because the method CopyReaderToClientDataSet can&#8217;t copy Blob fields from the DBXReader to the ClientDataSet. This is no longer a problem, Delphi XE2 Update 2 changed this behavior and now supports Blob fields when using the CopyReaderToClientDataSet method. [...]</p><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>If you have used the method TDBXDataSetReader.CopyReaderToClientDataSet, you probably came across with the message &#8220;Feature not implemented&#8221;, this exception occurs because the method CopyReaderToClientDataSet can&#8217;t copy Blob fields from the DBXReader to the ClientDataSet.</p>
<p>This is no longer a problem, <a title="Update 2 for Delphi XE2, C++Builder XE2 and RadPHP XE2 available" href="http://www.andreanolanusse.com/en/update-2-for-delphi-xe2-cbuilder-xe2-and-radphp-xe2-available/">Delphi XE2 Update 2</a> changed this behavior and now supports Blob fields when using the CopyReaderToClientDataSet method.</p>
<p>To learn how to use the method CopyReaderToClientDataSet read the article &#8220;<a title="Copying data from ClientDataSet to DBXReader" href="http://www.andreanolanusse.com/en/copying-data-from-clientdataset-to-dbxreader/">Copying data from ClientDataSet to DBXReader</a>&#8220;</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/en/connecting-to-postgresql-through-dbexpress-odbc-driver/" title="Connecting to PostgreSQL through dbExpress ODBC driver">Connecting to PostgreSQL through dbExpress ODBC driver</a></li><li><a href="http://www.andreanolanusse.com/en/caching-data-on-datasnap-server/" title="Caching data on DataSnap Server">Caching data on DataSnap Server</a></li><li><a href="http://www.andreanolanusse.com/en/copying-data-from-clientdataset-to-dbxreader/" title="Copying data from ClientDataSet to DBXReader">Copying data from ClientDataSet to DBXReader</a></li><li><a href="http://www.andreanolanusse.com/en/datasnap-videos-for-2011-what-would-you-like-to-see/" title="DataSnap videos for 2011 – what would you like to see?">DataSnap videos for 2011 – what would you like to see?</a></li><li><a href="http://www.andreanolanusse.com/en/registering-datasnap-server-class-in-runtime-with-delphi/" title="Registering DataSnap Server Class in runtime with Delphi">Registering DataSnap Server Class in runtime with Delphi</a></li><li><a href="http://www.andreanolanusse.com/en/datasnap-xe-and-windows-azure-rad-studio-xe-preview-3/" title="DataSnap XE and Windows Azure – RAD Studio XE Preview #3">DataSnap XE and Windows Azure – RAD Studio XE Preview #3</a></li></ul><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/en/copyreadertoclientdataset-blob-and-the-message-feature-not-implemented/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Connecting to PostgreSQL through dbExpress ODBC driver</title>
		<link>http://www.andreanolanusse.com/en/connecting-to-postgresql-through-dbexpress-odbc-driver/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=connecting-to-postgresql-through-dbexpress-odbc-driver</link>
		<comments>http://www.andreanolanusse.com/en/connecting-to-postgresql-through-dbexpress-odbc-driver/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 08:30:27 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[dbExpress]]></category>
		<category><![CDATA[FireMonkey]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/en/?p=723</guid>
		<description><![CDATA[<p>Delphi XE2 and C + + Builder XE2  introduce the new dbExpress ODBC driver, which enable FireMonkey and VCL applications to connect to any database that provides a ODBC driver. In order to show how it works, I created a FireMonkey project sample that connect to a PostgreSQL database. As first step, you must install the PostgreSQL ODBC driver [...]</p><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.andreanolanusse.com/pt/conectando-ao-postgresql-com-dbexpress-odbc-driver/www.embarcadero.com/products/delphi" target="_blank">Delphi</a> XE2 and <a href="http://www.andreanolanusse.com/pt/conectando-ao-postgresql-com-dbexpress-odbc-driver/www.embarcadero.com/products/cbuilder" target="_blank">C + + Builder</a> XE2  introduce the new dbExpress ODBC driver, which enable FireMonkey and VCL applications to connect to any database that provides a ODBC driver.</p>
<p>In order to show how it works, I created a FireMonkey project sample that connect to a PostgreSQL database.</p>
<p>As first step, you must install the PostgreSQL ODBC driver on the machine that will run the application. Second, applications compiled as 32-bit, requires the <a href="http://wwwmaster.postgresql.org/download/mirrors-ftp/odbc/versions/msi/psqlodbc_09_00_0310.zip" target="_blank">32-bit ODBC driver</a>, 64-bit applications will require the 64-bit ODBC driver.</p>
<p>Onde installed the driver, create and configure a User DSN or System DSN on the ODBC Data Source Administrator (odbcad32.exe):</p>
<p><strong>Instructions for windows 64-bit</strong></p>
<ul>
<li>For 32-bit applications use c:\Windows\SysWOW64\odbcad32.exe</li>
<li>For 64-bit applications use o c:\Windows\system32\odbcad32.exe</li>
</ul>
<p><strong>Instructions for windows 32-bit</strong></p>
<ul>
<li>Use  c:\Windows\system32\odbcad32.exe</li>
</ul>
<div><a href="http://www.andreanolanusse.com/en/wp-content/uploads/2011/11/ODBC-PostgreSQL.png"><img class="aligncenter size-full wp-image-1405" title="Configuração do Data Source ODBC para PostgreSQL" src="http://www.andreanolanusse.com/en/wp-content/uploads/2011/11/ODBC-PostgreSQL.png" alt="" width="291" height="399" /></a></div>
<p>The next step is to create an dbExpress ODBC alias on Data Explorer, where the Database Name parameter is the name of the Data Source created earlier, in my example the Data Source is called PostgreSQL35W. The database, username and password was already defined in the Data Source, but you can override the username and password parameters through the SQLConnection.</p>
<p style="text-align: center;"><a href="http://www.andreanolanusse.com/en/wp-content/uploads/2011/11/DataExplorer-PostgreSQL.png"><img class="aligncenter size-full wp-image-1404" title="Data Explorer conectado ao PostgreSQL" src="http://www.andreanolanusse.com/en/wp-content/uploads/2011/11/DataExplorer-PostgreSQL.png" alt="" width="230" height="379" /></a></p>
<p>Assuming you already know how to use the SQLConnection, DataSetProvider and ClientDataSet or SimpleDataSet ,and DataSource components, just connect all  the components as you usually do. The SQLConnection will look like this:</p>
<pre>  object SQLConnection1: TSQLConnection
    ConnectionName = 'PostgreSQLOdbc'
    DriverName = 'ODBC'
    LoginPrompt = False
    Params.Strings = (
      'drivername=ODBC'
      'Database=PostgreSQL35W')
  end</pre>
<p style="text-align: center;"><a href="http://www.andreanolanusse.com/en/wp-content/uploads/2011/11/IDE-ODBC-PostgreSQL.png"><img class="aligncenter size-full wp-image-1407" title="IDE conectando componentes dbExpress" src="http://www.andreanolanusse.com/en/wp-content/uploads/2011/11/IDE-ODBC-PostgreSQL.png" alt="" width="732" height="428" /></a></p>
<p>You can use the dbExpress framework when connected to a database through dbExpress ODBC driver. In XE2 the ODBC driver is compatible with Windows, we are evaluating the possibility to support this driver on Mac.</p>
<p>The figure below shows the FireMonkey application connected to PostgreSQL via dbExpress ODBC driver. Now you can connect to any other other database not supported natively by dbExpress.</p>
<p style="text-align: center;"><a href="http://www.andreanolanusse.com/en/wp-content/uploads/2011/11/FMI_dbExpress_ODBC.png"><img class="aligncenter size-full wp-image-1406" title="Aplicação FireMonkey conectada a PostgreSQL com dbExpress ODBC driver" src="http://www.andreanolanusse.com/en/wp-content/uploads/2011/11/FMI_dbExpress_ODBC.png" alt="" width="621" height="410" /></a></p>
<p>Download the source code <a href="https://radstudiodemos.svn.sourceforge.net/svnroot/radstudiodemos/branches/RadStudio_XE2/Delphi/Database/dbExpress/ODBCPostgreSQL" target="_blank">here</a>.</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/en/using-dbexpress-framework-on-windows-and-mac-with-cbuilder/" title="Using dbExpress Framework on Windows and Mac with C++Builder">Using dbExpress Framework on Windows and Mac with C++Builder</a></li><li><a href="http://www.andreanolanusse.com/en/copyreadertoclientdataset-blob-and-the-message-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob and the message &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob and the message &#8220;Feature not implemented&#8221;</a></li><li><a href="http://www.andreanolanusse.com/en/a-little-bit-about-firemonkey-and-delphi-xe2/" title="A little bit about FireMonkey and Delphi XE2">A little bit about FireMonkey and Delphi XE2</a></li><li><a href="http://www.andreanolanusse.com/en/new-dbexpress-driver-for-firebird-in-delphi-2010-and-cbuilder-2010/" title="Video: New dbExpress driver for Firebird in Delphi 2010 and C++Builder 2010">Video: New dbExpress driver for Firebird in Delphi 2010 and C++Builder 2010</a></li><li><a href="http://www.andreanolanusse.com/en/firemonkey-3d-text-editor/" title="FireMonkey 3D Text Editor">FireMonkey 3D Text Editor</a></li><li><a href="http://www.andreanolanusse.com/en/using-regular-expression-on-cbuilder-firemonkey-application/" title="Using Regular Expression on C++Builder FireMonkey Application">Using Regular Expression on C++Builder FireMonkey Application</a></li></ul><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/en/connecting-to-postgresql-through-dbexpress-odbc-driver/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Update 2 for Delphi XE2, C++Builder XE2 and RadPHP XE2 available</title>
		<link>http://www.andreanolanusse.com/en/update-2-for-delphi-xe2-cbuilder-xe2-and-radphp-xe2-available/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=update-2-for-delphi-xe2-cbuilder-xe2-and-radphp-xe2-available</link>
		<comments>http://www.andreanolanusse.com/en/update-2-for-delphi-xe2-cbuilder-xe2-and-radphp-xe2-available/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 22:30:47 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[HotFix]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/en/?p=720</guid>
		<description><![CDATA[<p>The Update 2 for the XE2 release of Delphi, C++Builder and RadPHP are available on the following links. You can download Update 2 for Delphi and C++Builder through the &#8220;Check for Updates&#8221; option. RAD Studio XE2 Update 2 Update 2 for Delphi, C++Builder and RAD Studio XE2 - http://cc.embarcadero.com/item/28597 Delphi XE2 and C++Builder XE2 ISO (includes [...]</p><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>The Update 2 for the XE2 release of Delphi, C++Builder and RadPHP are available on the following links.</p>
<p>You can download Update 2 for Delphi and C++Builder through the &#8220;Check for Updates&#8221; option.</p>
<div class="avia-box alert large  rounded "><span class="avia-innerbox" >If you have your Delphi XE2 or C++Builder XE2 IDE installed on XP, you have to download the Update from the registered user page.</span></div>
<p><strong>RAD Studio XE2 Update 2</strong></p>
<ul>
<li>Update 2 for Delphi, C++Builder and RAD Studio XE2 - <a href="http://cc.embarcadero.com/item/28597" target="_blank">http://cc.embarcadero.com/item/28597</a></li>
<li>Delphi XE2 and C++Builder XE2 ISO (includes Update 2) - <a href="http://cc.embarcadero.com/item/28616" target="_blank">http://cc.embarcadero.com/item/28616</a></li>
<li>Delphi XE2 and C++Builder XE2 Update 2 Bug Fix List -  <a href="http://edn.embarcadero.com/article/41750" target="_blank">http://edn.embarcadero.com/article/41750</a></li>
</ul>
<p><strong>RAD Studio XE2 Help Update 1 - </strong><a href="http://cc.embarcadero.com/item/28613">http://cc.embarcadero.com/item/28613</a></p>
<p><strong>RadPHP XE2 Update 2</strong></p>
<ul>
<li>Update 2 for RadPHP - <a href="http://cc.embarcadero.com/item/28614">http://cc.embarcadero.com/item/28614</a></li>
<li>RadPHP XE2 Update 2 Bug Fix List - <a href="http://edn.embarcadero.com/article/41756">http://edn.embarcadero.com/article/41756</a></li>
</ul>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/en/hotfix-2-and-help-update-2-for-delphi-xe-cbuilder-xe-and-rad-studio-xe-available/" title="Hotfix 2 and Help Update 2 for Delphi XE, C++Builder XE and RAD Studio XE available">Hotfix 2 and Help Update 2 for Delphi XE, C++Builder XE and RAD Studio XE available</a></li><li><a href="http://www.andreanolanusse.com/en/hotfix-1-for-delphi-xe-cbuilder-xe-and-rad-studio-xe-available/" title="Hotfix 1 for Delphi XE, C++Builder XE and RAD Studio XE available">Hotfix 1 for Delphi XE, C++Builder XE and RAD Studio XE available</a></li><li><a href="http://www.andreanolanusse.com/en/update-1-for-delphi-xe-and-cbuilder-xe-now-available/" title="Update 1 for Delphi XE and C++Builder XE now available">Update 1 for Delphi XE and C++Builder XE now available</a></li><li><a href="http://www.andreanolanusse.com/en/rad-studio-2010-hotfix-2-available/" title="RAD Studio 2010 Hotfix 2 available">RAD Studio 2010 Hotfix 2 available</a></li><li><a href="http://www.andreanolanusse.com/en/its-time-to-move-on/" title="It&#8217;s time to move on">It&#8217;s time to move on</a></li><li><a href="http://www.andreanolanusse.com/en/copyreadertoclientdataset-blob-and-the-message-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob and the message &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob and the message &#8220;Feature not implemented&#8221;</a></li></ul><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/en/update-2-for-delphi-xe2-cbuilder-xe2-and-radphp-xe2-available/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Creating XML files with Delphi and FireMonkey on Mac</title>
		<link>http://www.andreanolanusse.com/en/creating-xml-files-with-delphi-and-firemonkey-on-mac/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=creating-xml-files-with-delphi-and-firemonkey-on-mac</link>
		<comments>http://www.andreanolanusse.com/en/creating-xml-files-with-delphi-and-firemonkey-on-mac/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 11:19:40 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[FireMonkey]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/en/?p=717</guid>
		<description><![CDATA[<p>I got some questions about how to manipulate XML files in FireMonkey applications when running on Mac. One of the solution for that is to use the Mac API (Cocoa), there are several class and different ways to work with XML on Mac, in this post I&#8217;m going to show one way to create an [...]</p><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>I got some questions about how to manipulate XML files in <a href="http://www.embarcadero.com/products/firemonkey" target="_blank">FireMonkey</a> applications when running on Mac.</p>
<p>One of the solution for that is to use the Mac API (Cocoa), there are several class and different ways to work with XML on Mac, in this post I&#8217;m going to show one way to create an XML file, if you are interested to learn more about the XML class available for Mac, visit the Apple documentation <a href="http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/NSXML_Concepts/NSXML.html#//apple_ref/doc/uid/TP40001269" target="_blank">website</a>.</p>
<p>Cocoa provide several classes/interfaces to work with XML, the sample project used on this post use <a href="http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSXMLDocument_Class/Reference/Reference.html#//apple_ref/occ/cl/NSXMLDocument" target="_blank">NSXMLDocument</a>, <a href="http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSXMLElement_Class/Reference/Reference.html#//apple_ref/occ/cl/NSXMLElement" target="_blank">NSXMLElement</a>, <a href="http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSXMLNode_Class/Reference/Reference.html" target="_blank">NSXMLNode</a> and NSData interfaces and related classes, all of them can be found in the Macapi.Foundation unit.</p>
<p>The NSXMLDocument interface and TNSXMLDocument class are the starting point to create the XML Document, where we define the version and encoding for the XML file.</p>
<pre class="brush: delphi">procedure TFrmXml.CreateXMLButtonClick(Sender: TObject);
var
  XmlDoc: NSXMLDocument;
  Root, Book, Author, Publisher: NSXMLElement;
  Data: NSData;
begin

  // Create Xml Document
  XmlDoc := TNSXMLDocument.Create;
  XmlDoc.setVersion(NSSTR('1.0'));
  XmlDoc.setCharacterEncoding(NSSTR('UTF-8'));</pre>
<p>After that we need to define what XML elements (nodes) will be added to the XML, since I&#8217;m going to create several elements I created three helper methods (CreateElement and Attribute) to help me with that.</p>
<p>The CreateElement method has two implementations, the first one is very simple, just create a new TNSXMLElement based on the name and value parameters.</p>
<pre class="brush: delphi">function TFrmXml.CreateElement(Name, Value: String): NSXMLElement;
begin
  Result := TNSXMLElement.Create;
  Result.setName(NSSTR(Name));
  Result.setStringValue(NSSTR(Value));
end;</pre>
<p>The second CreateElement implementation creates a new element which can contain attributes, in order to pass a NSXMLNode that represent a attribute, we will use the Attribute helper method.</p>
<pre class="brush: delphi">function TFrmXml.CreateElement(Name: String; Attr: NSXMLNode): NSXMLElement;
begin
  Result := TNSXMLElement.Create;
  Result.initWithName(NSSTR(Name));

  if Assigned(Attr) then
    Result.addAttribute(Attr);
end;</pre>
<p>Below a short overview about the NSXMLNode class extracted from Apple documentation:</p>
<blockquote><p>Objects of the NSXMLNode class are nodes in the abstract, logical tree structure that represents an XML document. Node objects can be of different kinds, corresponding to the following markup constructs in an XML document: element, attribute, text, processing instruction, namespace, and comment. In addition, a document-node object (specifically, an instance of NSXMLDocument) represents an XML document in its entirety. NSXMLNode objects can also represent document type declarations as well as declarations in Document Type Definitions (DTDs). Class factory methods of NSXMLNode enable you to create nodes of each kind. Only document, element, and DTD nodes may have child nodes.</p>
<p>Among the NSXML family of classes—that is, the Foundation classes with the prefix “NSXML” (excluding NSXMLParser)—the NSXMLNode class is the base class. Inheriting from it are the classes NSXMLElement, NSXMLDocument, NSXMLDTD, and NSXMLDTDNode. NSXMLNode specifies the interface common to all XML node objects and defines common node behavior and attributes, for example hierarchy level, node name and value, tree traversal, and the ability to emit representative XML markup text.</p></blockquote>
<p>NSXMLNode could be a comment, text, element and other types in Cocoa, the Attribute helper method ensure we will receive a NSXMLNode of type attribute.</p>
<pre class="brush: delphi">function TFrmXml.Attribute(Name, Value: String): NSXMLNode;
var
  Node: Pointer;
begin
  Node := TNSXMLNode.OCClass.attributeWithName(NSSTR(Name), NSSTR(Value));
  Result := TNSXMLNode.Wrap(Node);
end;</pre>
<p>&nbsp;</p>
<p>Now is time to use the helper methods to create the XML document and at the end use the NSData object to format and save the XML file. This is what the following code does:</p>
<pre class="brush: delphi">  // Create the root doc element including one attribute
  Root := CreateElement('BookStore', Attribute('url', 'http://www.amazon.com'));
  XmlDoc.initWithRootElement(Root);

  // Create the first Book node
  Book := CreateElement('Book', Attribute('Name', 'Steve Jobs'));

  // Create the Author and Publisher elements
  Author := CreateElement('Author', 'Walter Isaacson');
  Publisher := CreateElement('Publisher', 'Simon Schuster (October 24, 2011)');

  // Add the elements to the XML
  Root.addChild(Book);
  Book.addChild(Author);
  Book.addChild(Publisher);

  // Create the second Book node
  Book := CreateElement('Book', Attribute('Name',
    'Clean Code: A Handbook of Agile Software Craftsmanship'));
  Author := CreateElement('Author', 'Robert C. Martin');
  Publisher := CreateElement('Publisher',
    'Prentice Hall; 1 edition (August 11, 2008)');

  // Add the elements from the second Book node to the XML
  Root.addChild(Book);
  Book.addChild(Author);
  Book.addChild(Publisher);

  // Makes the Xml output more human-readable inserting
  // carriage returns and indenting nested elements
  Data := XmlDoc.XMLDataWithOptions(NSXMLNodePrettyPrint);
  Data.writeToFile(NSSTR(XMLLocation.Text), true);

  XmlContent.Lines.LoadFromFile(XMLLocation.Text);

end;

end.</pre>
<p>Here the resulting app on Mac OS X:</p>
<p><a href="http://www.andreanolanusse.com/en/wp-content/uploads/2011/10/FMX_Creating_XML.png"><img class="aligncenter size-full wp-image-718" title="FireMonkey app creating XML on Mac" src="http://www.andreanolanusse.com/en/wp-content/uploads/2011/10/FMX_Creating_XML.png" alt="" width="558" height="441" /></a></p>
<p>You can download the source code directly from the RAD Studio demos repository <a href="https://radstudiodemos.svn.sourceforge.net/svnroot/radstudiodemos/branches/RadStudio_XE2/FireMonkey/XMLonMac" target="_blank">here</a>.</p>
<p>I originally mention that TXMLDocument was not available for Mac, and this is incorrect, thanks Chris Rolliston for the heads up and to migrate my sample to TXMLDocument.</p>
<p>When you drop a TXMLDocument component on your design the default DOMVendor MSXML, you have to change to ADOM XML v4 to support cross-platform. In case you have the unit Xml.Win.msxmldom added on your form you won&#8217;t be able to compile for Mac, after you set the DOMVendor to ADOM XML v4 remove that unit from your code and everything will be fine.</p>
<p>Here the version using TXMLDocument:</p>
<pre class="brush: delphi">
unit MainForm;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes,
  System.Variants, XML.XMLDoc, FMX.Dialogs,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Layouts,
  FMX.Memo, FMX.Edit, FMX.Effects, FMX.Objects, Xml.xmldom, Xml.XMLIntf;

type
  TFrmXml = class(TForm)
    CreateXMLButton: TButton;
    XmlContent: TMemo;
    XMLLocation: TEdit;
    Label1: TLabel;
    Image1: TImage;
    procedure CreateXMLButtonClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  end;

var
  FrmXml: TFrmXml;

implementation

{$R *.fmx}

procedure TFrmXml.CreateXMLButtonClick(Sender: TObject);
var
  XmlDoc: IXMLDocument;
  Root, Book, Author, Publisher: IXMLNode;
begin
  // Create Xml Document
  XmlDoc := TXMLDocument.Create(nil);
  XmlDoc.Active := True;
  XmlDoc.Options := XmlDoc.Options + [doNodeAutoIndent];
  XmlDoc.Version := '1.0';

  // Create the root doc element with one attributes
  Root := XmlDoc.CreateNode('BookStore');
  Root.Attributes['url'] := 'http://www.amazon.com';
  XmlDoc.DocumentElement := Root;

  // Create the first Book node
  Book := XmlDoc.CreateNode('Book');
  Book.Attributes['Name'] := 'Steve Jobs';

  // Create the Author and Publisher elements
  Author := XmlDoc.CreateNode('Author');
  Author.Text := 'Walter Isaacson';
  Publisher := XmlDoc.CreateNode('Publisher');
  Publisher.Text := 'Simon Schuster (October 24, 2011)';

  // Add the elements to the XML
  Root.ChildNodes.Add(Book);
  Book.ChildNodes.Add(Author);
  Book.ChildNodes.Add(Publisher);

  // Create the second Book node
  Book := XmlDoc.CreateNode('Book');
  Book.Attributes['Name'] := 'Clean Code: A Handbook of Agile Software Craftsmanship';
  Author := XmlDoc.CreateNode('Author');
  Author.Text := 'Robert C. Martin';
  Publisher := XmlDoc.CreateNode('Publisher');
  Publisher.Text := 'Prentice Hall; 1 edition (August 11, 2008)';

  // Add the elements from the second Book node to the XML
  Root.ChildNodes.Add(Book);
  Book.ChildNodes.Add(Author);
  Book.ChildNodes.Add(Publisher);

  XmlDoc.SaveToFile(XMLLocation.Text);

  XmlContent.Lines.LoadFromFile(XMLLocation.Text);

end;

procedure TFrmXml.FormCreate(Sender: TObject);
begin
  XMLLocation.Text := IncludeTrailingPathDelimiter(GetHomePath) + 'create.xml';
end;

end.
</pre>
<p>With this you have everything you need to manipulate XML file on Windows and Mac.</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/en/firemonkey-3d-text-editor/" title="FireMonkey 3D Text Editor">FireMonkey 3D Text Editor</a></li><li><a href="http://www.andreanolanusse.com/en/connecting-to-postgresql-through-dbexpress-odbc-driver/" title="Connecting to PostgreSQL through dbExpress ODBC driver">Connecting to PostgreSQL through dbExpress ODBC driver</a></li><li><a href="http://www.andreanolanusse.com/en/video-delphi-xe2-and-firemonkey-app-on-windows-mac-and-ios/" title="Video: Delphi XE2 and FireMonkey app on Windows, Mac and iOS">Video: Delphi XE2 and FireMonkey app on Windows, Mac and iOS</a></li><li><a href="http://www.andreanolanusse.com/en/a-little-bit-about-firemonkey-and-delphi-xe2/" title="A little bit about FireMonkey and Delphi XE2">A little bit about FireMonkey and Delphi XE2</a></li><li><a href="http://www.andreanolanusse.com/en/android-apps-connected-to-delphi-datasnap-server/" title="Android apps connected to Delphi DataSnap Server">Android apps connected to Delphi DataSnap Server</a></li><li><a href="http://www.andreanolanusse.com/en/using-regular-expression-on-cbuilder-firemonkey-application/" title="Using Regular Expression on C++Builder FireMonkey Application">Using Regular Expression on C++Builder FireMonkey Application</a></li></ul><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/en/creating-xml-files-with-delphi-and-firemonkey-on-mac/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Publishing providers when registering DataSnap Server Class in runtime</title>
		<link>http://www.andreanolanusse.com/en/publishing-providers-when-registering-datasnap-server-class-in-runtime/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=publishing-providers-when-registering-datasnap-server-class-in-runtime</link>
		<comments>http://www.andreanolanusse.com/en/publishing-providers-when-registering-datasnap-server-class-in-runtime/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 00:13:14 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[DataSnap]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/en/?p=708</guid>
		<description><![CDATA[<p>A while ago I published a blog post about How to register DataSnap Server Class in runtime with Delphi, after that I got some feedback mentioning the source code I provided just publishes the Server Methods, and not the Providers as part of the Server Module, in other words the client application couldn&#8217;t see the Providers available [...]</p><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>A while ago I published a blog post about <a href="http://www.andreanolanusse.com/en/registering-datasnap-server-class-in-runtime-with-delphi/">How to register DataSnap Server Class in runtime with Delphi</a>, after that I got some feedback mentioning the source code I provided just publishes the Server Methods, and not the Providers as part of the Server Module, in other words the client application couldn&#8217;t see the Providers available on the DataSnap Server.</p>
<p>The solution for this issue is very simple, we just need to register the TDSProviderDataModuleAdapter class, which is used internally to allow a TProviderDataModule to be exposed to DataSnap clients. TDSProviderDataModuleAdapter acts as a proxy between a server-side TProviderDataModule and client-sides TDSProviderConnection.</p>
<p>We could just update the GetDSClass method implementation as below, it works, but it would not be the best implementation, just because the following code will always publish the IAppServer interface methods to the client side, in case your ServerModule doesn&#8217;t have any Provider, why you will publish the IAppServer? Doesn&#8217;t make sense, right?</p>
<p>Making the publication parameterizable will bring more flexibility and control to the application and the developer, it will be your decision to publish the Providers or not. A new parameter in the TSimpleServerClass constructor is everything we need.</p>
<p><span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">function TSimpleServerClass.GetDSClass: TDSClass;</span></p>
<pre class="brush: delphi">begin
  Result := TDSClass.Create(FPersistentClass, False);
  Result := TDSClass.Create(TDSProviderDataModuleAdapter, Result)
end;</pre>
<p>The following code represents the new implementation for the TSimpleServerClass. The change adds a new parameter (ExposeProvider) to the constructor, which will allow the developer to publish the providers (or not).</p>
<pre class="brush: delphi highlight: [18,19,20,21,31,41,42]">type

unit SimpleServerClass;

interface

uses DSServer, Classes, DSCommonServer, DSReflect;

type

  TSimpleServerClass = class(TDSServerClass)
  private
    FPersistentClass: TPersistentClass;
    FExposeProvider : Boolean;
  protected
    function GetDSClass: TDSClass; override;
  public
    constructor Create(AOwner: TComponent; AServer: TDSCustomServer;
      AClass: TPersistentClass; ExposeProvider: Boolean; ALifeCycle: String);
      reintroduce; overload;
  end;

implementation

constructor TSimpleServerClass.Create(AOwner: TComponent;
  AServer: TDSCustomServer; AClass: TPersistentClass; ExposeProvider: Boolean;
  ALifeCycle: String);
begin
  inherited Create(AOwner);
  FPersistentClass := AClass;
  FExposeProvider  := ExposeProvider;
  Self.Server := AServer;
  Self.LifeCycle := ALifeCycle;

end;

function TSimpleServerClass.GetDSClass: TDSClass;
var
  isAdapted : Boolean;
begin
  isAdapted := FPersistentClass.InheritsFrom(TProviderDataModule);
  Result := TDSClass.Create(FPersistentClass, isAdapted);
  if FExposeProvider and isAdapted then
     Result := TDSClass.Create(TDSProviderDataModuleAdapter, Result)
end;

end.</pre>
<p>The following code registers 3 classes, where only one exposes the Providers:</p>
<pre class="brush: delphi">procedure RegisterServerClasses(AOwner: TComponent; AServer: TDSServer);
begin
  Assert(AServer.Started = false, 'Can''t add class to non active Server');

  TSimpleServerClass.Create(AOwner, AServer, TGlobal, False, TDSLifeCycle.Server);
  TSimpleServerClass.Create(AOwner, AServer, TCustomer, True, TDSLifeCycle.Session);
  TSimpleServerClass.Create(AOwner, AServer, TObjectPool, False, TDSLifeCycle.Invocation);
end;</pre>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/en/android-apps-connected-to-delphi-datasnap-server/" title="Android apps connected to Delphi DataSnap Server">Android apps connected to Delphi DataSnap Server</a></li><li><a href="http://www.andreanolanusse.com/en/copyreadertoclientdataset-blob-and-the-message-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob and the message &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob and the message &#8220;Feature not implemented&#8221;</a></li><li><a href="http://www.andreanolanusse.com/en/caching-data-on-datasnap-server/" title="Caching data on DataSnap Server">Caching data on DataSnap Server</a></li><li><a href="http://www.andreanolanusse.com/en/copying-data-from-clientdataset-to-dbxreader/" title="Copying data from ClientDataSet to DBXReader">Copying data from ClientDataSet to DBXReader</a></li><li><a href="http://www.andreanolanusse.com/en/video-connecting-android-applications-with-datasnap-server-delphi-conference-brazil-2010/" title="Video: Connecting Android applications with DataSnap Server – Delphi Conference Brazil 2010">Video: Connecting Android applications with DataSnap Server – Delphi Conference Brazil 2010</a></li><li><a href="http://www.andreanolanusse.com/en/datasnap-videos-for-2011-what-would-you-like-to-see/" title="DataSnap videos for 2011 – what would you like to see?">DataSnap videos for 2011 – what would you like to see?</a></li></ul><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/en/publishing-providers-when-registering-datasnap-server-class-in-runtime/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ReportBuilder now available for Delphi XE2, VCL Win32 and Win64</title>
		<link>http://www.andreanolanusse.com/en/reportbuilder-now-available-for-delphi-xe2-vcl-win32-and-win64/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=reportbuilder-now-available-for-delphi-xe2-vcl-win32-and-win64</link>
		<comments>http://www.andreanolanusse.com/en/reportbuilder-now-available-for-delphi-xe2-vcl-win32-and-win64/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 05:28:41 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/en/?p=712</guid>
		<description><![CDATA[<p>Digital Metaphors the creator of ReportBuilder and our technology partner, announced the new release of Report Builder 14, this release support Delphi XE2, VCL Win32 and Win64. The following text is an email from Digital Metaphors, which include all the information about this new release. Subject: Digital Metaphors Corporation announces the release of ReportBuilder 14.0! [...]</p><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Digital Metaphors the creator of ReportBuilder and our technology partner, announced the new release of Report Builder 14, this release support Delphi XE2, VCL Win32 and Win64.</p>
<p>The following text is an email from Digital Metaphors, which include all the information about this new release.</p>
<p>Subject: Digital Metaphors Corporation announces the release of ReportBuilder 14.0!</p>
<p>ReportBuilder 14.0 includes VCL support for Delphi XE2, Delphi XE, Delphi 2010, 2009, 2007, 2006, and Delphi 7.</p>
<p>Overview: <a href="http://www.digital-metaphors.com/rbwiki/General/What's_New/RB_14" target="_blank">http://www.digital-metaphors.com/rbwiki/General/What&#8217;s_New/RB_14</a></p>
<p>New Feature List: <a href="http://www.digital-metaphors.com/PDF/NewFeatures.pdf" target="_blank">http://www.digital-metaphors.com/PDF/NewFeatures.pdf</a></p>
<p>Pricing: <a href="http://www.digital-metaphors.com/order" target="_blank">http://www.digital-metaphors.com/order</a></p>
<p>Upgrade here! <a href="https://www.digital-metaphors.com/secure" target="_blank">https://www.digital-metaphors.com/secure</a></p>
<p>Version 14.0 &#8211; 10/21/2011<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
- Delphi XE2 support for VCL Win32<br />
- Delphi XE2 support for VCL Win64</p>
<p>Design Layers<br />
&#8212;&#8212;&#8212;&#8212;-<br />
- separate layout elements into logical layers<br />
- load/save design layers (example std header/footer or watermark)<br />
- prevent users from adding, selecting, moving, deleting elements<br />
- prevent users from seeing, selecting, deleting layers<br />
- LayerTypes: Band, Page<br />
- Inactive Layers draw alpha blended behind active layer<br />
- ComponentOptions: Add, Delete, Select, Move<br />
- LayerOptions: Select, Rename, Visible, Delete, Load, Save</p>
<p>Preview<br />
&#8212;&#8212;-<br />
- continuous page scrolling<br />
- single and two-up page display<br />
- background thread report generation<br />
- hand scrolling<br />
- PreviewFormSetings.PageDisplay property<br />
- PreviewFormSettings.PageIncrement propery (control page generation)<br />
- PreviewFormsSettings.SinglePageOnly (forces use of old screen device)<br />
- Viewer.DeadSpace property (control amount of space outside of page)</p>
<p>Output Devices<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
- HTML file device<br />
- PDF/A device (http://en.wikipedia.org/wiki/PDF/A)<br />
- PDFSettings.PDFA boolean property (force PDF to PDF/A standard)<br />
- PDF image compression (automatic jpeg compression)<br />
- PDF image scaling (PDFSettings.ImageCompressionLevel)<br />
- PDF, high quality metafile to bitmap conversion<br />
- DocForm device (exact positioning of lines and text)<br />
- RTFSettings.UseTextBoxes boolean property (exact text positioning)<br />
- RTF/Doc device, support for CodePage and Font.CharSet<br />
- XLS support for AppName, Author, Subject, Title (XLSSEttings)<br />
- Email, Extended Mapi plug-in<br />
- avoid security warnings, Unicode and Html support<br />
- Email, support for HTML messages via Indy 10 Extended Mapi<br />
- Email, EmailSettings.HtmlBody, BodyHtmlAttachments properties<br />
- Email, EmailSettings.StreamAttachments option<br />
- Email, Unicode message body (Unicode VCL w/Indy 10 or Extended Mapi)<br />
- new ScrollableScreenDevice, used by Viewer to implement continuous scrolling<br />
- PrintToFile enhancements<br />
- DefaultFileDeviceType defaults to PDF<br />
- default TextFileName, ArchiveFileName ($MyDocuments)\Report.pdf<br />
- Change default file device, auto-changes default file name<br />
- change output format in print dialog, auto-changes default file name<br />
- support for wildcards in default FileName, ($MyDocuments) is resolved<br />
by print dialog for display to end-user<br />
- change the extension in the print dialog, changes the file</p>
<p>International Language support<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
- added 64-bit language modules</p>
<p>TeeChart support<br />
&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
- enhanced TeeChart Package Builder for 64-bit</p>
<p>RCL<br />
&#8212;<br />
- Variable support for Int64 via dtLargeInt data type<br />
- Groups, PreventOrphans<br />
- prevent group header with no detail at bottom of page<br />
- prevent group footer with no detail at top of page<br />
- Columns, ColumnBalancing<br />
- generate vertical columns in min number of rows<br />
- ColumnFooter, AlignToBottom boolean<br />
- enables column footer to generate immediately after detail<br />
- Band.Background property for all bands<br />
- DrawCommand.AsMetaFile feature for simpler RCL add-on support<br />
- SummaryBand enhanced to print on same page as columns</p>
<p>Engine<br />
&#8212;&#8212;<br />
- enhanced group generation &#8211; PreventOrphans management<br />
- enhanced horizontal and vertical Column generation</p>
<p>EndUser<br />
&#8212;&#8212;-<br />
- DesignLayers<br />
- LayerOptions: use to lock layers, hide layers<br />
- for example, create a visible/invisible water mark layer<br />
- ComponentOptions: prevent users from moving, deleting etc.<br />
- new OnCustomSaveQueryDoc event<br />
- new ShowHelp method &#8211; fires Designer.OnHelp event<br />
- ReportExplorer, invokes Help via new Designer.ShowHelp</p>
<p>RAP<br />
&#8212;<br />
- new Int64 data type<br />
- compiler/parser support for // comments<br />
- enhanced object ref scoping: childreport can access parent report objects<br />
- File functions: FileExists, DirectoryExists, ExtractFileName, etc.<br />
- RTTI for PrintDialog<br />
- RTTI for FileDevice<br />
- RTTI for ObjectList<br />
- RTTI enhanced for Picture, Graphic<br />
- enhanced run-time exception message to display subreport name</p>
<p>Server<br />
&#8212;&#8212;<br />
- added 64-bit windows service (ReportBuilder Services)</p>
<p>*features may vary by ReportBuilder Edition and Delphi version<br />
*RB 14 includes support for seven Delphi versions:<br />
D7, D2006. D2007, D2009, D2010, DXE, DXE2.</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/en/firemonkey-3d-text-editor/" title="FireMonkey 3D Text Editor">FireMonkey 3D Text Editor</a></li><li><a href="http://www.andreanolanusse.com/en/android-apps-connected-to-delphi-datasnap-server/" title="Android apps connected to Delphi DataSnap Server">Android apps connected to Delphi DataSnap Server</a></li><li><a href="http://www.andreanolanusse.com/en/its-time-to-move-on/" title="It&#8217;s time to move on">It&#8217;s time to move on</a></li><li><a href="http://www.andreanolanusse.com/en/700-delphi-developers-at-delphi-conference-brazil/" title="700 Delphi Developers at Delphi Conference Brazil">700 Delphi Developers at Delphi Conference Brazil</a></li><li><a href="http://www.andreanolanusse.com/en/white-paper-reasons-to-migrate-to-delphi-xe2-what-you-might-have-missed-since-delphi-7/" title="White Paper: Reasons to Migrate to Delphi XE2 | What you might have missed since Delphi 7">White Paper: Reasons to Migrate to Delphi XE2 | What you might have missed since Delphi 7</a></li><li><a href="http://www.andreanolanusse.com/en/copyreadertoclientdataset-blob-and-the-message-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob and the message &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob and the message &#8220;Feature not implemented&#8221;</a></li></ul><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/en/reportbuilder-now-available-for-delphi-xe2-vcl-win32-and-win64/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shell Extension for Windows 32-bit and 64-bit with Delphi XE2</title>
		<link>http://www.andreanolanusse.com/en/shell-extension-for-windows-32-bit-and-64-bit-with-delphi-xe2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=shell-extension-for-windows-32-bit-and-64-bit-with-delphi-xe2</link>
		<comments>http://www.andreanolanusse.com/en/shell-extension-for-windows-32-bit-and-64-bit-with-delphi-xe2/#comments</comments>
		<pubDate>Fri, 14 Oct 2011 23:37:55 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Cloud]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/en/?p=702</guid>
		<description><![CDATA[<p>Now that Delphi XE2 compiles for 64-bit, developers can go beyond Windows 32-bit and start creating Windows Shell Extension for Windows 64-bit. Shell Extensions are in-process COM objects which extends the abilities of Windows OS. In this post I&#8217;m going to add two new context menu items in Windows Explorer. The menus will allow users [...]</p><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Now that <a href="http://www.embarcadero.com/products/delphi" target="_blank">Delphi XE2</a> compiles for 64-bit, developers can go beyond Windows 32-bit and start creating Windows Shell Extension for Windows 64-bit. Shell Extensions are in-process COM objects which extends the abilities of Windows OS. In this post I&#8217;m going to add two new context menu items in Windows Explorer. The menus will allow users to upload files to Microsoft Azure and Amazon S3. This post will go through how to create the extension, register and compile for 32-bit and 64-bit. I&#8217;m preparing another post, in which I will explain how to upload files to Amazon S3 and Microsoft Azure.</p>
<h3>Creating the CloudUpload Shell Extension</h3>
<p>In order to start creating a Shell Extension in Delphi, you first need to create an ActiveX Library project and after that create a new Automation Object. In the example I use for this post, the project name is CloudUpload and the Automation Object is called TCloudUploadContext. The TCloudUploadContext class must implement the interfaces IShellExtInit and IContextMenu in order to integrate the Context Menu in Windows Explorer.</p>
<pre class="brush: delphi">    { IShellExtInit Methods }
    { Initialize the context menu if a files was selected}
    function IShellExtInit.Initialize = ShellExtInitialize;
    function ShellExtInitialize(pidlFolder: PItemIDList; lpdobj: IDataObject;
      hKeyProgID: HKEY): HResult; stdcall;

    { IContextMenu Methods }
    { Initializes the context menu and it decides which items appear in it,
      based on the flags you pass }
    function QueryContextMenu(Menu: HMENU; indexMenu, idCmdFirst, idCmdLast,
      uFlags: UINT): HResult; stdcall;

    { Execute the command, which will be the upload to Amazon or Azure}
    function InvokeCommand(var lpici: TCMInvokeCommandInfo): HResult; stdcall;
    { Set help string on the Explorer status bar when the menu item is selected }
    function GetCommandString(idCmd: UINT_PTR; uFlags: UINT; pwReserved: PUINT;
      pszName: LPSTR; cchMax: UINT): HResult; stdcall;</pre>
<p>The ShellExtInitialize defines if the Context Menu will appear or not in Windows Explorer. In this sample the context menu only shows up if one file has been selected, otherwise no Context Menu. In case only one file was selected the FFileName variable will receive the name of the file.</p>
<pre class="brush: delphi">function TCloudUploadContextMenu.ShellExtInitialize(pidlFolder: PItemIDList;
  lpdobj: IDataObject; hKeyProgID: HKEY): HResult;
var
  DataFormat: TFormatEtc;
  StrgMedium: TStgMedium;
  Buffer: array [0 .. MAX_PATH] of Char;
begin
  Result := E_FAIL;

  { Check if an object was defined }
  if lpdobj = nil then
    Exit;

  { Prepare to get information about the object }
  DataFormat.cfFormat := CF_HDROP;
  DataFormat.ptd := nil;
  DataFormat.dwAspect := DVASPECT_CONTENT;
  DataFormat.lindex := -1;
  DataFormat.tymed := TYMED_HGLOBAL;

  if lpdobj.GetData(DataFormat, StrgMedium) &lt;&gt; S_OK then
    Exit;

  { The implementation now support only one file }
  if DragQueryFile(StrgMedium.hGlobal, $FFFFFFFF, nil, 0) = 1 then
  begin
    SetLength(FFileName, MAX_PATH);
    DragQueryFile(StrgMedium.hGlobal, 0, @Buffer, SizeOf(Buffer));
    FFileName := Buffer;
    Result := NOERROR;
  end
  else
  begin
    // Don't show the Menu if more then one file was selected
    FFileName := EmptyStr;
    Result := E_FAIL;
  end;

  { http://msdn.microsoft.com/en-us/library/ms693491(v=vs.85).aspx }
  ReleaseStgMedium(StrgMedium);

end;</pre>
<p>After the context menu handler is initialized via the IShellExtInit interface, Windows uses the IContextMenu interface to call the other methods of our context menu handler. In this case it will call QueryContextMenu, GetCommandString and InvokeCommand.</p>
<p>The Context Menu options (<a href="http://aws.amazon.com/s3/" target="_blank">Amazon S3</a>, <a href="http://www.microsoft.com/windowsazure/features/storage/" target="_blank">Microsoft Azure</a>) will be created through the QueryContextMenu method.</p>
<pre class="brush: delphi">function TCloudUploadContextMenu.QueryContextMenu(Menu: HMENU;
  indexMenu, idCmdFirst, idCmdLast, uFlags: UINT): HResult;
var
  CloudMenuItem: TMenuItemInfo;
  MenuCaption: String;
  SubMenu: HMENU;
  uId: UINT;
begin
  { only adding one menu CloudMenuItem, so generate the result code accordingly }
  Result := MakeResult(SEVERITY_SUCCESS, 0, 3);

  { store the menu CloudMenuItem index }
  FMenuItemIndex := indexMenu;

  { specify what the menu says, depending on where it was spawned }
  if (uFlags = CMF_NORMAL) then // from the desktop
    MenuCaption := 'Send file from Desktop to the Cloud'
  else if (uFlags and CMF_VERBSONLY) = CMF_VERBSONLY then // from a shortcut
    MenuCaption := 'Send file from Shourtcut to the Cloud'
  else if (uFlags and CMF_EXPLORE) = CMF_EXPLORE then // from explorer
    MenuCaption := 'Send file from Explorer to the Cloud'
  else
    { fail for any other value }
    Result := E_FAIL;

  if Result &lt;&gt; E_FAIL then
  begin

    SubMenu := CreatePopupMenu;

    uId := idCmdFirst;
    InsertMenu(SubMenu, AmazonIndex, MF_BYPOSITION, uId, TClouds[AmazonIndex]);

    Inc(uId);
    InsertMenu(SubMenu, AzureIndex, MF_BYPOSITION, uId, TClouds[AzureIndex]);

    FillChar(CloudMenuItem, SizeOf(TMenuItemInfo), #0);
    CloudMenuItem.cbSize := SizeOf(TMenuItemInfo);
    CloudMenuItem.fMask := MIIM_SUBMENU or MIIM_STRING or MIIM_ID;
    CloudMenuItem.fType := MFT_STRING;
    CloudMenuItem.wID := FMenuItemIndex;
    CloudMenuItem.hSubMenu := SubMenu;
    CloudMenuItem.dwTypeData := PWideChar(MenuCaption);
    CloudMenuItem.cch := Length(MenuCaption);

    InsertMenuItem(Menu, indexMenu, True, CloudMenuItem);
  end;
end;</pre>
<p>When you are in the Windows Explorer and you pass the mouse over one of the Cloud menu items a short help message is displayed in the Windows Explorer status bar, it is defined on the implementation of the method GetCommandString, which returns a string to the Windows Explorer to display.</p>
<p><span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">function TCloudUploadContextMenu.GetCommandString(idCmd: UINT_PTR; uFlags: UINT;</span></p>
<pre class="brush: delphi">  pwReserved: PUINT; pszName: LPSTR; cchMax: UINT): HResult;
begin
  Result := E_INVALIDARG;

  { Set help string on the Explorer status bar when the menu item is selected }
  if (idCmd in [AmazonIndex, AzureIndex]) and (uFlags = GCS_HELPTEXT) then
  begin
    StrLCopy(PWideChar(pszName), PWideChar('Copy the selected file to ' +
      TClouds[idCmd]), cchMax);
    Result := NOERROR;
  end;

end;</pre>
<p>As the user clicks in one of the Cloud menu items, the method InvokeCommand will be called and start the process to upload the selected file to the Cloud selected. At this point we already have the file name and based on the lpici parameters we can identify what menu item the user clicked.</p>
<pre class="brush: delphi">function TCloudUploadContextMenu.InvokeCommand(var lpici: TCMInvokeCommandInfo): HResult;
var
  Item: Word;
begin
  Result := E_FAIL;

  if HiWord(Integer(lpici.lpVerb)) &lt;&gt; 0 then
    Exit;

  { if the index matches the index for the menu, show the cloud options }
  Item := LoWord(Integer(lpici.lpVerb));

  if Item in [AmazonIndex, AzureIndex] then
  begin
    try
      Upload(lpici.HWND, Item, FFileName);
    except
      on E: Exception do
        MessageBox(lpici.hwnd, PWideChar(E.Message), 'Cloud Upload', MB_ICONERROR);

    end;
    Result := NOERROR;
  end;

end;</pre>
<p>In order for the COM object to be created whenever the CloudUpload is loaded, it&#8217;s necessary to create an instance of a class factory that specifically creates an instance of the shell extension object, the factory instance will be created on the initialization section, based on the following code, which is a replacement for the default code created by Delphi.</p>
<pre class="brush: delphi">initialization
  TCloudUploadObjectFactory.Create(ComServer, TCloudUploadContextMenu, CLASS_CloudUploadContextMenu, ciMultiInstance, tmApartment);
end.</pre>
<p>Since the class factory will be responsible to register/unregister the DLL, the methods ApproveShellExtension and UpdateRegistry will be invoked, it will happen when you use the regsvr32.exe.</p>
<pre class="brush: delphi">  { the new class factory }
  TCloudUploadObjectFactory = class(TAutoObjectFactory)
  protected
    procedure ApproveShellExtension(&amp;Register: Boolean; const ClsID: string);
    function GetProgID: string; override;
  public
    procedure UpdateRegistry(Register: Boolean); override;
  end;

{ TCloudUploadObjectFactory }

{ Required to registration for Windows NT/2000 }
procedure TCloudUploadObjectFactory.ApproveShellExtension(&amp;Register: Boolean;
  const ClsID: string);
Const
  WinNTRegKey =
    'SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved';
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;

  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;

    if not Reg.OpenKey(WinNTRegKey, True) then
      Exit;

    { register the extension appropriately }
    if &amp;Register then
      Reg.WriteString(ClsID, Description)
    else
      Reg.DeleteValue(ClsID);
  finally
    Reg.Free;
  end;

end;

function TCloudUploadObjectFactory.GetProgID: string;
begin
  { ProgID not required for shell extensions }
  Result := '';
end;

procedure TCloudUploadObjectFactory.UpdateRegistry(Register: Boolean);
Const
  ContextKey = '*\shellex\ContextMenuHandlers\%s';
begin
  { perform normal registration }
  inherited UpdateRegistry(Register);

  { Registration required for Windows NT/2000 }
  ApproveShellExtension(Register, GUIDToString(ClassID));

  { if this server is being registered, register the required key/values
    to expose it to Explorer }
  if Register then
    CreateRegKey(Format(ContextKey, [ClassName]), '', GUIDToString(ClassID),
      HKEY_CLASSES_ROOT)
  else
    DeleteRegKey(Format(ContextKey, [ClassName]));

end;</pre>
<h3>Compile for 32-bit or 64-bit platform</h3>
<p>At this point we just need to compile the extension, for this sample the Win APIs and RTL methods are the same for both platforms, we don&#8217;t need any specific code. You can define the target platform through the Project Manager, by default your project target 32-bit Windows, right click on Target Platforms to add 64-bit Windows.<br />
<a href="http://www.andreanolanusse.com/en/wp-content/uploads/2011/10/Platform3264.png"><img class="aligncenter" title="Delphi XE2 - 32-bit or 64-bit platform" src="http://www.andreanolanusse.com/en/wp-content/uploads/2011/10/Platform3264-209x300.png" alt="" width="209" height="300" /></a></p>
<p>You can&#8217;t register 32-bit dll in 64-bit operation system, and you can not register 64-bit dll in 32-bit operation system. If you are using your develop machine to test, compile for the platform compatible with your OS.</p>
<p>&nbsp;</p>
<h3>Registering the CloudUpload Shell Extension</h3>
<p>First, you must Run as Administrator the application you are going to use to register the shell extensions even if you are the Administrator user.</p>
<p>32-bit shell extensions can be registered through the IDE, and command line (cmd) can be used to register 32-bit and 64-bit.</p>
<p>Here the cmd line to register and unregister:</p>
<p>- Run as Administrator the cmd;</p>
<p>- Register the extension using the following command line: regsvr32 &lt;PATH WHERE IS LOCATED THE DLL&gt;CloudUpload.dll</p>
<p>- To unregister the extension using the following command line: regsvr32 &lt;PATH WHERE IS LOCATED THE DLL&gt;CloudUpload.dll /u</p>
<p>After register the DLL you can open the Windows Explorer, select one file and right click, you will see the new menu &#8220;Send file from Explorer to the Cloud&#8221;. The following screenshot show the shell extension on my Windows 7 64-bit.</p>
<p style="text-align: center;"><a href="http://www.andreanolanusse.com/en/wp-content/uploads/2011/10/Cloud-ShellExtension.png"><img class="aligncenter size-full wp-image-703" title="CloudUpload Shell Extension" src="http://www.andreanolanusse.com/en/wp-content/uploads/2011/10/Cloud-ShellExtension.png" alt="" width="554" height="385" /></a></p>
<p>You can download he source code in 2 different ways:</p>
<ul>
<li>Use the <a href="http://www.embarcadero.com/products/rad-studio/downloads" target="_blank">RAD Studio XE2 IDE</a> menu File option &#8220;Open from Version Control&#8221; and set the URL to <a href="https://radstudiodemos.svn.sourceforge.net/svnroot/radstudiodemos/branches/RadStudio_XE2/Delphi/CloudAPI/CloudUpload" target="_blank">https://radstudiodemos.svn.sourceforge.net/svnroot/radstudiodemos/branches/RadStudio_XE2/Delphi/CloudAPI/CloudUpload</a></li>
<li>Update your RAD Studio XE2 local demo repository, in case you use TortoiseSVN just right click on the C:\Users\Public\Documents\RAD Studio\9.0\Samples\Delphi folder and select update;</li>
</ul>
<div>In the next post I will explain the Cloud API part of this sample, in the meantime you can play with full sample.</div>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/en/microsoft-windows-azure-during-30-days-free/" title="Microsoft Windows Azure during 30 days FREE">Microsoft Windows Azure during 30 days FREE</a></li><li><a href="http://www.andreanolanusse.com/en/test-our-datasnap-xe-live-server-on-amazon-cloud/" title="Test our DataSnap XE Live Server on Amazon Cloud">Test our DataSnap XE Live Server on Amazon Cloud</a></li><li><a href="http://www.andreanolanusse.com/en/datasnap-xe-and-windows-azure-rad-studio-xe-preview-3/" title="DataSnap XE and Windows Azure – RAD Studio XE Preview #3">DataSnap XE and Windows Azure – RAD Studio XE Preview #3</a></li><li><a href="http://www.andreanolanusse.com/en/firemonkey-3d-text-editor/" title="FireMonkey 3D Text Editor">FireMonkey 3D Text Editor</a></li><li><a href="http://www.andreanolanusse.com/en/amazon-web-service-aws-is-the-first-choice-for-php-developers/" title="Amazon Web Services (AWS) is the first choice for PHP Developers">Amazon Web Services (AWS) is the first choice for PHP Developers</a></li><li><a href="http://www.andreanolanusse.com/en/android-apps-connected-to-delphi-datasnap-server/" title="Android apps connected to Delphi DataSnap Server">Android apps connected to Delphi DataSnap Server</a></li></ul><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/en/shell-extension-for-windows-32-bit-and-64-bit-with-delphi-xe2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Delphi Certification Program and Delphi XE2 release</title>
		<link>http://www.andreanolanusse.com/en/delphi-certification-program-and-delphi-xe2-release/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=delphi-certification-program-and-delphi-xe2-release</link>
		<comments>http://www.andreanolanusse.com/en/delphi-certification-program-and-delphi-xe2-release/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 08:26:50 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Certification]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/en/?p=700</guid>
		<description><![CDATA[<p>During the world tour, lots of Delphi developers ask me if the Delphi Certification Program is up to date with the Delphi XE2 release, the answer is YES. The certification program tests your knowledge in Delphi, we recommend you to use Delphi XE or XE2 release in order to be prepared to answers questions related [...]</p><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>During the world tour, lots of Delphi developers ask me if the Delphi Certification Program is up to date with the Delphi XE2 release, the answer is YES.</p>
<p>The certification program tests your knowledge in Delphi, we recommend you to use Delphi XE or XE2 release in order to be prepared to answers questions related with the IDE, generics, anonymous methods, DataSnap, unicode, and other areas, which was implemented/improved after 2009 releases.</p>
<div class="avia-box alert   rounded "><span class="avia-innerbox" >You can buy the Delphi Certification from our online shop or local partner, If you purchase or upgrade to <a href="http://www.embarcadero.com/products/delphi" target="_blank">Delphi XE2</a> or <a href="http://www.embarcadero.com/products/rad-studio" target="_blank">RAD Studio XE2</a> by September 30th 2011, you can get a free code to take the Delphi Developer Certification exam.</span></div>
<p>The Delphi Certification program allows you to distinguish yourself from all the other professionals in this increasingly competitive marketplace.</p>
<p>&nbsp;</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/en/delphi-developer-certification-tips-3/" title="Delphi Developer Certification Tips #3">Delphi Developer Certification Tips #3</a></li><li><a href="http://www.andreanolanusse.com/en/video-delphi-certification-webinar-replay/" title="Video: Delphi Certification Webinar Replay">Video: Delphi Certification Webinar Replay</a></li><li><a href="http://www.andreanolanusse.com/en/free-delphi-certification-for-delphi-xe-and-rad-studio-xe-registered-users/" title="FREE Delphi Certification for Delphi XE and RAD Studio XE registered users">FREE Delphi Certification for Delphi XE and RAD Studio XE registered users</a></li><li><a href="http://www.andreanolanusse.com/en/delphi-developer-certification-tips-2/" title="Delphi Developer Certification Tips #2">Delphi Developer Certification Tips #2</a></li><li><a href="http://www.andreanolanusse.com/en/delphi-developer-certification-tips-1/" title="Delphi Developer Certification Tips #1">Delphi Developer Certification Tips #1</a></li><li><a href="http://www.andreanolanusse.com/en/delphi-certification-program-official-announcement/" title="Delphi Certification Program &#8211; Official Announcement">Delphi Certification Program &#8211; Official Announcement</a></li></ul><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/en/delphi-certification-program-and-delphi-xe2-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trial, Datasheet, Feature Matrix and FAQ for XE2 release available</title>
		<link>http://www.andreanolanusse.com/en/trial-datasheet-feature-matrix-and-faq-for-xe2-release-available/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=trial-datasheet-feature-matrix-and-faq-for-xe2-release-available</link>
		<comments>http://www.andreanolanusse.com/en/trial-datasheet-feature-matrix-and-faq-for-xe2-release-available/#comments</comments>
		<pubDate>Thu, 01 Sep 2011 08:59:25 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Delphi Prism (.NET)]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Delphi Prism]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/en/?p=683</guid>
		<description><![CDATA[<p>Is time to buy RAD Studio XE2 products including Delphi XE2, C++Builder XE2, Embarcadero Prism XE2 and RadPHP XE2, all available now from our online stores and available through our partners around the world. &#160; DataSheet Feature Matrix FAQ Trial RAD Studio XE2 PDF PDF Read Download Delphi XE2 PDF PDF Read Download C++Builder XE2 PDF PDF [...]</p><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Is time to buy RAD Studio XE2 products including Delphi XE2, C++Builder XE2, Embarcadero Prism XE2 and RadPHP XE2, all <a href="http://www.embarcadero.com/online-stores" target="_blank">available now from our online stores</a> and available through our partners around the world.</p>
<p>&nbsp;</p>
<table width="95%">
<tbody>
<tr>
<td align="right"></td>
<td align="center"><strong>DataSheet</strong></td>
<td align="center"><strong>Feature Matrix</strong></td>
<td align="center"><strong>FAQ</strong></td>
<td align="center"><strong>Trial</strong></td>
</tr>
<tr>
<td align="right"><strong>RAD Studio XE2</strong></td>
<td align="center"><a title="RAD Studio XE2 Datasheet" href="http://edn.embarcadero.com/article/images/41560/RADStudio_XE2_datasheet.pdf" target="_blank">PDF</a></td>
<td align="center"><a title="RAD Studio XE2 Feature Matrix" href="http://edn.embarcadero.com/article/images/41566/RAD_Studio_XE2_Feature_Matrix.pdf" target="_blank">PDF</a></td>
<td align="center"><a title="RAD Studio XE2 FAQ" href="http://edn.embarcadero.com/article/41577" target="_blank">Read</a></td>
<td align="center"><a title="RAD Studio XE2 Trial" href="https://downloads.embarcadero.com/free/rad_studio" target="_blank">Download</a></td>
</tr>
<tr>
<td align="right"><strong>Delphi XE2</strong></td>
<td align="center"><a title="Delphi XE2 Datasheet" href="http://edn.embarcadero.com/article/images/41559/Delphi_XE2_datasheet.pdf" target="_blank">PDF</a></td>
<td align="center"><a title="Delphi XE2 Feature Matrix" href="http://edn.embarcadero.com/article/images/41563/Delphi_XE2_Feature_Matrix.pdf" target="_blank">PDF</a></td>
<td align="center"><a title="Delphi XE2 FAQ" href="http://edn.embarcadero.com/article/41570" target="_blank">Read</a></td>
<td align="center"><a title="Delphi XE2 Trial" href="https://downloads.embarcadero.com/free/delphi" target="_blank">Download</a></td>
</tr>
<tr>
<td align="right"><strong>C++Builder XE2</strong></td>
<td align="center"><a title="C++Builder XE2 Datasheet" href="http://edn.embarcadero.com/article/images/41562/CBuilder_XE2_datasheet.pdf" target="_blank">PDF</a></td>
<td align="center"><a title="C++Builder XE2 Feature Matrix" href="http://edn.embarcadero.com/article/images/41564/CBuilder_XE2_Feature_Matrix.pdf" target="_blank">PDF</a></td>
<td align="center"><a title="C++Builder XE2 FAQ" href="http://edn.embarcadero.com/article/41571" target="_blank">Read</a></td>
<td align="center"><a title="C++Builder XE2 Trial" href="https://downloads.embarcadero.com/free/cbuilder" target="_blank">Download</a></td>
</tr>
<tr>
<td align="right"><strong>RadPHP XE2</strong></td>
<td align="center"><a title="RadPHP XE2 Datasheet" href="http://edn.embarcadero.com/article/images/41561/RadPHP_XE2_datasheet.pdf" target="_blank">PDF</a></td>
<td align="center"><a title="RadPHP XE2 Feature Matrix" href="http://edn.embarcadero.com/article/images/41565/RadPHP_XE2_Feature_Matrix.pdf" target="_blank">PDF</a></td>
<td align="center"><a title="RadPHP XE2 FAQ" href="http://edn.embarcadero.com/article/41573" target="_blank">Read</a></td>
<td align="center"><a title="RadPHP XE2 Trial" href="https://downloads.embarcadero.com/free/radphp" target="_blank">Download</a></td>
</tr>
<tr>
<td align="right"><strong>Prism XE2</strong></td>
<td align="center"><a title="Prism XE2 Datasheet" href="http://edn.embarcadero.com/article/images/41560/RADStudio_XE2_datasheet.pdf" target="_blank">PDF</a></td>
<td align="center"><a title="Prism XE2 Feature Matrix" href="http://edn.embarcadero.com/article/images/41567/Embarcadero_Prism_XE2_Feature_Matrix.pdf" target="_blank">PDF</a></td>
<td align="center"><a title="Prism XE2 FAQ" href="http://edn.embarcadero.com/article/41575" target="_blank">Read</a></td>
<td align="center"><a title="Prism XE2 Trial" href="https://downloads.embarcadero.com/free/prism" target="_blank">Download</a></td>
</tr>
</tbody>
</table>
<p>We plan to have the web site live with all the new product information soon. The official announcement press releases for the tools and FireMonkey will go out then. We thought would be great to let you know that you can get the software a little early. Enjoy!</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/en/rad-studio-xe2-a-new-era-for-delphi-and-cbuilder-developers/" title="RAD Studio XE2 a new era for Delphi and C++Builder Developers">RAD Studio XE2 a new era for Delphi and C++Builder Developers</a></li><li><a href="http://www.andreanolanusse.com/en/available-now-the-new-delphi-xe-cbuilder-xe-delphi-prism-xe-and-radphp-xe/" title="Available now the new Delphi XE, C++Builder XE, Delphi Prism XE and RadPHP XE">Available now the new Delphi XE, C++Builder XE, Delphi Prism XE and RadPHP XE</a></li><li><a href="http://www.andreanolanusse.com/en/datasnap-xe-and-windows-azure-rad-studio-xe-preview-3/" title="DataSnap XE and Windows Azure – RAD Studio XE Preview #3">DataSnap XE and Windows Azure – RAD Studio XE Preview #3</a></li><li><a href="http://www.andreanolanusse.com/en/rad-studio-xe-delphi-xe-cbuilder-xe-delphi-prism-xe-and-radphp-xe/" title="RAD Studio XE = Delphi XE, C++Builder XE, Delphi Prism XE and RadPHP XE">RAD Studio XE = Delphi XE, C++Builder XE, Delphi Prism XE and RadPHP XE</a></li><li><a href="http://www.andreanolanusse.com/en/agile-development-delphi-xe-cbuilder-xe-delphi-prism-xe-radphp-xe/" title="Agile Development = Delphi XE + C++Builder XE + Delphi Prism XE + RadPHP XE">Agile Development = Delphi XE + C++Builder XE + Delphi Prism XE + RadPHP XE</a></li><li><a href="http://www.andreanolanusse.com/en/its-time-to-move-on/" title="It&#8217;s time to move on">It&#8217;s time to move on</a></li></ul><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/en/trial-datasheet-feature-matrix-and-faq-for-xe2-release-available/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Video: Delphi XE2 and FireMonkey app on Windows, Mac and iOS</title>
		<link>http://www.andreanolanusse.com/en/video-delphi-xe2-and-firemonkey-app-on-windows-mac-and-ios/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=video-delphi-xe2-and-firemonkey-app-on-windows-mac-and-ios</link>
		<comments>http://www.andreanolanusse.com/en/video-delphi-xe2-and-firemonkey-app-on-windows-mac-and-ios/#comments</comments>
		<pubDate>Fri, 05 Aug 2011 08:53:31 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[FireMonkey]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/en/?p=681</guid>
		<description><![CDATA[<p>After the RAD Studio XE2 World Tour first stop in New Zealand, you see all over internet great comments about Delphi XE2 and FireMonkey support for iOS, beyond Windows 64-bit and Mac. I know you are curious to see all of the great stuffs coming on RAD Studio XE2 and to give you an idea; [...]</p><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>After the RAD Studio XE2 World Tour first stop in New Zealand, you see all over internet great comments about Delphi XE2 and <a href="http://www.embarcadero.com/products/firemonkey" target="_blank">FireMonkey</a> support for iOS, beyond Windows 64-bit and Mac.</p>
<p>I know you are curious to see all of the great stuffs coming on RAD Studio XE2 and to give you an idea; I prepared a 5 minutes preview video. It shows a <a href="http://www.embarcadero.com/products/delphi" target="_blank">Delphi XE2</a> HD FireMonkey application running on Windows (64-bit), Mac and iOS, the use of 3D components and animations.</p>
<p>There are lot of possibilities with FireMonkey and all of the other new features in Rad Studio XE2, we are presenting all of them during the World Tour, reserve some time and register for the World Tour near you.</p>
<p style="text-align: center;"><a target="_blank" href="http://www.embarcadero.com/world-tour" class="avia-button  light  red large" ><span class="avia-note">Register today for the RAD Studio XE2 World Tour</span></a></p>
<p>&nbsp;</p>
<p style="text-align: center;"><iframe src="http://www.youtube.com/embed/JtFIw2YpuQc?hd=1" frameborder="0" width="560" height="349"></iframe></p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/en/firemonkey-3d-text-editor/" title="FireMonkey 3D Text Editor">FireMonkey 3D Text Editor</a></li><li><a href="http://www.andreanolanusse.com/en/connecting-to-postgresql-through-dbexpress-odbc-driver/" title="Connecting to PostgreSQL through dbExpress ODBC driver">Connecting to PostgreSQL through dbExpress ODBC driver</a></li><li><a href="http://www.andreanolanusse.com/en/creating-xml-files-with-delphi-and-firemonkey-on-mac/" title="Creating XML files with Delphi and FireMonkey on Mac">Creating XML files with Delphi and FireMonkey on Mac</a></li><li><a href="http://www.andreanolanusse.com/en/a-little-bit-about-firemonkey-and-delphi-xe2/" title="A little bit about FireMonkey and Delphi XE2">A little bit about FireMonkey and Delphi XE2</a></li><li><a href="http://www.andreanolanusse.com/en/video-delphi-certification-webinar-replay/" title="Video: Delphi Certification Webinar Replay">Video: Delphi Certification Webinar Replay</a></li><li><a href="http://www.andreanolanusse.com/en/video-delphi-conference-2010-brazil-opening-keynote-with-david-i/" title="Video: Delphi Conference 2010 Brazil Opening Keynote with David I">Video: Delphi Conference 2010 Brazil Opening Keynote with David I</a></li></ul><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/en/video-delphi-xe2-and-firemonkey-app-on-windows-mac-and-ios/feed/</wfw:commentRss>
		<slash:comments>44</slash:comments>
		</item>
		<item>
		<title>A little bit about FireMonkey and Delphi XE2</title>
		<link>http://www.andreanolanusse.com/en/a-little-bit-about-firemonkey-and-delphi-xe2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-little-bit-about-firemonkey-and-delphi-xe2</link>
		<comments>http://www.andreanolanusse.com/en/a-little-bit-about-firemonkey-and-delphi-xe2/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 10:04:35 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[FireMonkey]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/en/?p=671</guid>
		<description><![CDATA[<p>FireMonkey is going to be a whole new world of possibilities for Delphi and C++Builder developers. The platform itself is flexible, customizable and multi-platform, all components behave the same on Windows and Mac. In this post I will give you a general idea of some very powerful concepts related with components in FireMonkey, during the RAD Studio [...]</p><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>FireMonkey is going to be a whole new world of possibilities for Delphi and C++Builder developers. The platform itself is flexible, customizable and multi-platform, all components behave the same on Windows and Mac. In this post I will give you a general idea of some very powerful concepts related with components in FireMonkey, during the RAD Studio XE2 World Tour you will see much more.</p>
<p>Components in FireMonkey are containers; it means you can embed any component inside any other component. Just to give you an idea, the Button component is composed of 9 components. When together, they look and behave like a Button, let&#8217;s see how it works.</p>
<p><span class="avia-ilink"><a class="tick" href="" >Starts with a TLayout component, which helps to organize all of the controls</a></span><br />
<span class="avia-ilink"><a class="tick" href="" >Three TRectangle are responsible for the button look and feel, like: border, background and foreground color</a></span><br />
<span class="avia-ilink"><a class="tick" href="" >A Label represents the Button text</a></span><br />
<span class="avia-ilink"><a class="tick" href="" >And ends with four components, two for animation and other two for effects. Why effects and animations? Animations will happen when you move the mouse over/out the button, effects will happen when button is pressed or has a focus, the glow effect is responsible for that.</a></span></p>
<p>As you can see, a number of different features has been used to create a button, this is what happen with all of FireMonkey components.</p>
<p>And one more think, components&#8217; look and feel can be changed and reused using Styles. Imagine a web page that use CSS, you change the web page look and feel just updating the CSS, right? In FireMonkey is the same, instead CSS you will use Styles to change the application look and feel.</p>
<p>Apps and components look and work properly on the respective native platform, but you can also style them to look or behave differently. below an example.</p>
<p style="text-align: center;"><a href="http://www.andreanolanusse.com/en/wp-content/uploads/2011/08/FireMonkey-Styles.png"><img class="size-full wp-image-672 aligncenter" title="FireMonkey Styles" src="http://www.andreanolanusse.com/en/wp-content/uploads/2011/08/FireMonkey-Styles.png" alt="" width="597" height="645" /></a></p>
<p>More to come, stay tuned to this <a href="http://www.andreanolanusse.com/en/">blog</a>, other Embarcadero <a href="http://blogs.embarcadero.com" target="_blank">blogs</a> and Embarcadero web site.</p>
<p style="text-align: center;"><a target="_blank" href="http://www.embarcadero.com/world-tour" class="avia-button  light  red large" ><span class="avia-note">Register today for the RAD Studio XE2 World Tour</span></a></p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/en/connecting-to-postgresql-through-dbexpress-odbc-driver/" title="Connecting to PostgreSQL through dbExpress ODBC driver">Connecting to PostgreSQL through dbExpress ODBC driver</a></li><li><a href="http://www.andreanolanusse.com/en/firemonkey-3d-text-editor/" title="FireMonkey 3D Text Editor">FireMonkey 3D Text Editor</a></li><li><a href="http://www.andreanolanusse.com/en/using-regular-expression-on-cbuilder-firemonkey-application/" title="Using Regular Expression on C++Builder FireMonkey Application">Using Regular Expression on C++Builder FireMonkey Application</a></li><li><a href="http://www.andreanolanusse.com/en/using-dbexpress-framework-on-windows-and-mac-with-cbuilder/" title="Using dbExpress Framework on Windows and Mac with C++Builder">Using dbExpress Framework on Windows and Mac with C++Builder</a></li><li><a href="http://www.andreanolanusse.com/en/its-time-to-move-on/" title="It&#8217;s time to move on">It&#8217;s time to move on</a></li><li><a href="http://www.andreanolanusse.com/en/copyreadertoclientdataset-blob-and-the-message-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob and the message &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob and the message &#8220;Feature not implemented&#8221;</a></li></ul><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/en/a-little-bit-about-firemonkey-and-delphi-xe2/feed/</wfw:commentRss>
		<slash:comments>60</slash:comments>
		</item>
		<item>
		<title>RAD Studio XE2 a new era for Delphi and C++Builder Developers</title>
		<link>http://www.andreanolanusse.com/en/rad-studio-xe2-a-new-era-for-delphi-and-cbuilder-developers/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rad-studio-xe2-a-new-era-for-delphi-and-cbuilder-developers</link>
		<comments>http://www.andreanolanusse.com/en/rad-studio-xe2-a-new-era-for-delphi-and-cbuilder-developers/#comments</comments>
		<pubDate>Tue, 02 Aug 2011 08:32:40 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Delphi Prism]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/en/?p=668</guid>
		<description><![CDATA[<p>RAD Studio XE2 is coming and together comes the XE2 release for Delphi, C++Builder, RadPHP and Prism, in order to show all of the great features coming, this week we are starting the RAD Studio XE2 World Tour, you can check the list of countries part of the World Tour and make your registration. This [...]</p><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>RAD Studio XE2 is coming and together comes the XE2 release for Delphi, C++Builder, RadPHP and Prism, in order to show all of the great features coming, this week we are starting the RAD Studio XE2 World Tour, you can check the list of countries part of the World Tour and make your registration.</p>
<p>This release represents a new era for Delphi and C++Builder developers, there are lot of new stuffs on this release and we will show all of them during the RAD Studio XE Tour, in the mean time I would like to highlight some of them:</p>
<p><span class="avia-ilink"><a class="tick" href="" >New Delphi for 64-bit Windows and full VCL/RTL support</a></span><br />
<span class="avia-ilink"><a class="tick" href="" >Full monitoring and controlling of DataSnap connections</a></span><br />
<span class="avia-ilink"><a class="tick" href="" >LiveBinding, the new mechanism for binding any type of data</a></span><br />
<span class="avia-ilink"><a class="tick" href="" >dbExpress ODBC driver</a></span><br />
<span class="avia-ilink"><a class="tick" href="" >Cloud API support for Amazon S3</a></span><br />
<span class="avia-ilink"><a class="tick" href="" >VCL Styles to modernize the look and feel of VCL applications</a></span><br />
<span class="avia-ilink"><a class="tick" href="" >FireMonkey the new platform for NATIVE software development</a></span></p>
<p>FireMonkey is a big step forward, it opens a whole new market for Delphi and C++Builder developers, allowing to offer their current applications on Mac, develop new products and at the end deploy their applications through App Store reaching millions of end users. The power of FireMonkey will distinguish your applications from any other.</p>
<p>Much more to come, stay tuned to this <a href="http://www.andreanolanusse.com/en">blog</a>, other <a href="http://blogs.embarcadero.com">Embarcadero blogs</a> and our Embarcadero website throughout this month for more information.</p>
<p style="text-align: center;"><a target="_blank" href="http://www.embarcadero.com/world-tour" class="avia-button  light  red large" ><span class="avia-note">Register today for the RAD Studio XE2 World Tour</span></a></p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/en/trial-datasheet-feature-matrix-and-faq-for-xe2-release-available/" title="Trial, Datasheet, Feature Matrix and FAQ for XE2 release available">Trial, Datasheet, Feature Matrix and FAQ for XE2 release available</a></li><li><a href="http://www.andreanolanusse.com/en/available-now-the-new-delphi-xe-cbuilder-xe-delphi-prism-xe-and-radphp-xe/" title="Available now the new Delphi XE, C++Builder XE, Delphi Prism XE and RadPHP XE">Available now the new Delphi XE, C++Builder XE, Delphi Prism XE and RadPHP XE</a></li><li><a href="http://www.andreanolanusse.com/en/datasnap-xe-and-windows-azure-rad-studio-xe-preview-3/" title="DataSnap XE and Windows Azure – RAD Studio XE Preview #3">DataSnap XE and Windows Azure – RAD Studio XE Preview #3</a></li><li><a href="http://www.andreanolanusse.com/en/rad-studio-xe-delphi-xe-cbuilder-xe-delphi-prism-xe-and-radphp-xe/" title="RAD Studio XE = Delphi XE, C++Builder XE, Delphi Prism XE and RadPHP XE">RAD Studio XE = Delphi XE, C++Builder XE, Delphi Prism XE and RadPHP XE</a></li><li><a href="http://www.andreanolanusse.com/en/agile-development-delphi-xe-cbuilder-xe-delphi-prism-xe-radphp-xe/" title="Agile Development = Delphi XE + C++Builder XE + Delphi Prism XE + RadPHP XE">Agile Development = Delphi XE + C++Builder XE + Delphi Prism XE + RadPHP XE</a></li><li><a href="http://www.andreanolanusse.com/en/its-time-to-move-on/" title="It&#8217;s time to move on">It&#8217;s time to move on</a></li></ul><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/en/rad-studio-xe2-a-new-era-for-delphi-and-cbuilder-developers/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Delphi Developer Certification Tips #3</title>
		<link>http://www.andreanolanusse.com/en/delphi-developer-certification-tips-3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=delphi-developer-certification-tips-3</link>
		<comments>http://www.andreanolanusse.com/en/delphi-developer-certification-tips-3/#comments</comments>
		<pubDate>Sat, 30 Jul 2011 08:49:33 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Certification]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/en/?p=662</guid>
		<description><![CDATA[<p>The tips #3 for the Delphi Developer Certification it&#8217;s about exception handling. Exceptions are exceptional conditions that require special handling; the exception handling provides a standard way of dealing with errors. Using exception handling you will be able to manage errors when it happen and decide what to do. The RAD Studio documentation has a [...]</p><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>The tips #3 for the Delphi Developer Certification it&#8217;s about exception handling.</p>
<p>Exceptions are exceptional conditions that require special handling; the exception handling provides a standard way of dealing with errors. Using exception handling you will be able to manage errors when it happen and decide what to do.</p>
<p>The RAD Studio documentation has a specific topic about Exception Handling, take sometime and read this <strong><a title="RAD Studio documentation - Exception Handling" href="http://docwiki.embarcadero.com/RADStudio/en/Exception_handling_Index" target="_blank">topic</a>,</strong> it will help you to answer the exam questions related with exceptions.</p>
<p>You may think because you use try..except..end, you know enough to answer the exam questions, I would say <strong>NO</strong>. Since we have a large pool of questions, the exam will ask you about different aspects of exception handling, like: <a title="RAD Studio documentation - Reraising exceptions" href="http://docwiki.embarcadero.com/RADStudio/en/Reraising_Exceptions" target="_blank">Re-raising Exceptions</a>, <a title="RAD Studio documentation - Silent Exceptions" href="http://docwiki.embarcadero.com/RADStudio/en/Silent_Exceptions" target="_blank">Silent Exceptions</a> and more.</p>
<p>Silent Exceptions is a way to raise a exception without showing the error message, while the regular exception show the error message, but is not only this.</p>
<ul>
<li>Silent exceptions all descend from the standard exception type <em>EAbort</em>.</li>
<li>Delphi has a procedure called Abort, which automatically call raise a EAbort exception</li>
</ul>
<div>When the topic is re-raising exceptions, RAD Studio documentation has a good introduction on that.</div>
<div>
<p>When the reserved word <strong>raise</strong> occurs in an exception block without an object reference following it, it raises whatever exception is handled by the block. This allows an exception handler to respond to an error in a limited way and then re-raise the exception. Re-raising is useful when a procedure or function has to clean up after an exception occurs but cannot fully handle the exception.</p>
<p>For example, the GetFileList function allocates a TStringList object and fills it with file names matching a specified search path:</p>
</div>
<pre class="brush: delphi">function GetFileList(const Path: string): TStringList;
var
  I: Integer;
  SearchRec: TSearchRec;
begin
  Result := TStringList.Create;
  try
    I := FindFirst(Path, 0, SearchRec);
    while I = 0 do
    begin
      Result.Add(SearchRec.Name);
      I := FindNext(SearchRec);
    end;
  except
    FindClose(SearchRec);
    Result.Free;
    raise;
  end;
end;</pre>
<p>GetFileList creates a TStringList object, and then uses the FindFirst and FindNext functions to initialize it. If the initialization fails &#8211; for example because the search path is invalid, or because there is not enough memory to fill in the string list &#8211; GetFileList needs to dispose of the new string list, since the caller does not yet know of its existence. For this reason, initialization of the string list is performed in a try&#8230;except..statement. If an exception occurs, the statement&#8217;s exception block disposes of the string list, then re-raises the exception.</p>
<p>The exam goes beyond of the two aspects mentioned here. The following three links will help you to learn more about exception handling:</p>
<ul>
<li><a href="http://docwiki.embarcadero.com/RADStudio/en/Exception_handling_Index" target="_blank">RAD Studio documentation &#8211; Exception Handling</a></li>
<li><a href="http://www.delphibasics.co.uk/Article.asp?Name=Exceptions" target="_blank">Delphi Basic &#8211; Exception handling in your code</a></li>
<li><a href="http://www.delphibasics.co.uk/RTL.asp?Name=Raise" target="_blank">Delphi Basic &#8211; Raise</a></li>
</ul>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/en/delphi-certification-program-and-delphi-xe2-release/" title="Delphi Certification Program and Delphi XE2 release">Delphi Certification Program and Delphi XE2 release</a></li><li><a href="http://www.andreanolanusse.com/en/video-delphi-certification-webinar-replay/" title="Video: Delphi Certification Webinar Replay">Video: Delphi Certification Webinar Replay</a></li><li><a href="http://www.andreanolanusse.com/en/free-delphi-certification-for-delphi-xe-and-rad-studio-xe-registered-users/" title="FREE Delphi Certification for Delphi XE and RAD Studio XE registered users">FREE Delphi Certification for Delphi XE and RAD Studio XE registered users</a></li><li><a href="http://www.andreanolanusse.com/en/delphi-developer-certification-tips-2/" title="Delphi Developer Certification Tips #2">Delphi Developer Certification Tips #2</a></li><li><a href="http://www.andreanolanusse.com/en/delphi-developer-certification-tips-1/" title="Delphi Developer Certification Tips #1">Delphi Developer Certification Tips #1</a></li><li><a href="http://www.andreanolanusse.com/en/delphi-certification-program-official-announcement/" title="Delphi Certification Program &#8211; Official Announcement">Delphi Certification Program &#8211; Official Announcement</a></li></ul><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/en/delphi-developer-certification-tips-3/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Video: Delphi Certification Webinar Replay</title>
		<link>http://www.andreanolanusse.com/en/video-delphi-certification-webinar-replay/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=video-delphi-certification-webinar-replay</link>
		<comments>http://www.andreanolanusse.com/en/video-delphi-certification-webinar-replay/#comments</comments>
		<pubDate>Fri, 15 Jul 2011 05:34:24 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Certification]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Webinar]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/en/?p=564</guid>
		<description><![CDATA[<p>In case you missed the Delphi Certification webinar, below you can download the slides and watch the video replay. This presentation is a good start for who is looking in to became Delphi Developer Certified or Delphi Master Developer Certified. Presentation Slides Webinar Replay All the Certification Program information is available at the Certification Center, [...]</p><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>In case you missed the Delphi Certification webinar, below you can download the slides and watch the video replay. This presentation is a good start for who is looking in to became Delphi Developer Certified or Delphi Master Developer Certified.</p>
<p>Presentation Slides</p>
<div id="__ss_8601567" style="width: 510px;"><iframe src="http://www.slideshare.net/slideshow/embed_code/8601567" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="510" height="426"></iframe></div>
<p>Webinar Replay</p>
<p><iframe src="http://www.youtube.com/embed/bJepSwdDctQ?hd=1" frameborder="0" width="480" height="390"></iframe><br />
All the Certification Program information is available at the Certification Center, as well as the study guides and FAQ.</p>
<ul>
<li><a href="http://www.embarcadero.com/images/dm/technical-papers/delphi-developer-certification-study-guide.pdf" target="_blank">Delphi Developer</a></li>
<li><a href="http://www.embarcadero.com/images/dm/technical-papers/delphi-master-developer-certification-study-guide.pdf" target="_blank">Delphi Master Developer</a></li>
<li><a href="http://www.embarcadero.com/certification/delphi-certification-faqs" target="_blank">Certification FAQs</a></li>
<li><a href="http://certification.embarcadero.com/redeem" target="_blank">Free Exam Offer for Delphi XE and RAD Studio XE Users</a></li>
<li>Purchase an Exam Code – <a href="http://www.embarcadero.com/certification/where-to-buy" target="_blank">here</a></li>
<li>Contact a Delphi Certification Center to take the Delphi Master Developer Certification exam, <a href="http://www.embarcadero.com/partners/certification" target="_blank">find one here</a></li>
</ul>
<div>Good luck in the exam.</div>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/en/delphi-certification-program-and-delphi-xe2-release/" title="Delphi Certification Program and Delphi XE2 release">Delphi Certification Program and Delphi XE2 release</a></li><li><a href="http://www.andreanolanusse.com/en/video-delphi-xe2-and-firemonkey-app-on-windows-mac-and-ios/" title="Video: Delphi XE2 and FireMonkey app on Windows, Mac and iOS">Video: Delphi XE2 and FireMonkey app on Windows, Mac and iOS</a></li><li><a href="http://www.andreanolanusse.com/en/delphi-developer-certification-tips-3/" title="Delphi Developer Certification Tips #3">Delphi Developer Certification Tips #3</a></li><li><a href="http://www.andreanolanusse.com/en/free-delphi-certification-for-delphi-xe-and-rad-studio-xe-registered-users/" title="FREE Delphi Certification for Delphi XE and RAD Studio XE registered users">FREE Delphi Certification for Delphi XE and RAD Studio XE registered users</a></li><li><a href="http://www.andreanolanusse.com/en/delphi-developer-certification-tips-2/" title="Delphi Developer Certification Tips #2">Delphi Developer Certification Tips #2</a></li><li><a href="http://www.andreanolanusse.com/en/delphi-developer-certification-tips-1/" title="Delphi Developer Certification Tips #1">Delphi Developer Certification Tips #1</a></li></ul><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/en/video-delphi-certification-webinar-replay/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Free German e-book on Delphi Programming for beginners</title>
		<link>http://www.andreanolanusse.com/en/free-german-e-book-on-delphi-programming-for-beginners/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=free-german-e-book-on-delphi-programming-for-beginners</link>
		<comments>http://www.andreanolanusse.com/en/free-german-e-book-on-delphi-programming-for-beginners/#comments</comments>
		<pubDate>Sat, 09 Jul 2011 04:59:27 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Books]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/en/?p=560</guid>
		<description><![CDATA[<p>The German Delphi user group Delphi-Treff  has published a free e-book called Delphi Starter. This e-book is intended for all those who never have developed with Delphi, it uses Delphi XE Starter edition and contain 107 pages. Congratulations for the Delphi-Treff team. Related PostsFree eBook Delphi XE Starter Essentials by Bob SwartDelphi 2009 Handbook translation for Portuguese “Recursos Avançados do Delphi”FireMonkey 3D Text EditorAndroid [...]</p><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>The German Delphi user group <a href="http://www.delphi-treff.de/" target="_blank">Delphi-Treff</a>  has published a free e-book called Delphi Starter. This e-book is intended for all those who never have developed with Delphi, it uses <a href="http://www.embarcadero.com/products/delphi/starter" target="_blank">Delphi XE Starter edition</a> and contain 107 pages.</p>
<p>Congratulations for the Delphi-Treff team.</p>
<p style="text-align: center;"><a title="Download" href="http://downloads.delphi-treff.de/DelphiStarter.pdf" target="_blank"><img class="size-medium wp-image-561 aligncenter" title="Download the Delphi Starter German e-book" src="http://www.andreanolanusse.com/en/wp-content/uploads/2011/07/Delphi-Starter-German-Book-224x300.png" alt="" width="224" height="300" /></a></p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/en/free-ebook-delphi-xe-starter-essentials-by-bob-swart/" title="Free eBook Delphi XE Starter Essentials by Bob Swart">Free eBook Delphi XE Starter Essentials by Bob Swart</a></li><li><a href="http://www.andreanolanusse.com/en/delphi-2009-handbook-translation-for-portuguese-recursos-avancados-do-delphi/" title="Delphi 2009 Handbook translation for Portuguese “Recursos Avançados do Delphi”">Delphi 2009 Handbook translation for Portuguese “Recursos Avançados do Delphi”</a></li><li><a href="http://www.andreanolanusse.com/en/firemonkey-3d-text-editor/" title="FireMonkey 3D Text Editor">FireMonkey 3D Text Editor</a></li><li><a href="http://www.andreanolanusse.com/en/android-apps-connected-to-delphi-datasnap-server/" title="Android apps connected to Delphi DataSnap Server">Android apps connected to Delphi DataSnap Server</a></li><li><a href="http://www.andreanolanusse.com/en/its-time-to-move-on/" title="It&#8217;s time to move on">It&#8217;s time to move on</a></li><li><a href="http://www.andreanolanusse.com/en/700-delphi-developers-at-delphi-conference-brazil/" title="700 Delphi Developers at Delphi Conference Brazil">700 Delphi Developers at Delphi Conference Brazil</a></li></ul><p><a href="http://www.andreanolanusse.com/en">Andreano Lanusse | Technology and Software Development</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/en/free-german-e-book-on-delphi-programming-for-beginners/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

