<?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; Tecnologia e Desenvolvimento de Software &#187; Delphi</title>
	<atom:link href="http://www.andreanolanusse.com/pt/tag/delphi/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.andreanolanusse.com/pt</link>
	<description>Andreano Lanusse blog - acesse artigos, tutoriais e vídeos sobre tecnologia, desenvolvimento de software, técnicas de programação, banco de dados, jogos e mais.</description>
	<lastBuildDate>Thu, 17 May 2012 19:34:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Bye Bye Embarcadero</title>
		<link>http://www.andreanolanusse.com/pt/bye-bye-embarcadero/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=bye-bye-embarcadero</link>
		<comments>http://www.andreanolanusse.com/pt/bye-bye-embarcadero/#comments</comments>
		<pubDate>Tue, 01 May 2012 22:02:12 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Geral]]></category>
		<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Delphi Prism]]></category>
		<category><![CDATA[FireMonkey]]></category>
		<category><![CDATA[RadPHP]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1543</guid>
		<description><![CDATA[<p>Amigos desenvolvedores, Minha história de Borland começou no Brasil em dezembro de 1995, teve muitos capítulos (Borland/Inprise/CodeGear/Embarcadero), um novo e importante capítulo iniciou em dezembro de 2006 com minha vinda para os Estados Unidos e hoje este capítulo chega ao fim. Hoje é meu último dia na Embarcadero Technologies. Eu gostaria de agradecer a todos [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Amigos desenvolvedores,</p>
<p>Minha história de Borland começou no Brasil em dezembro de 1995, teve muitos capítulos (Borland/Inprise/CodeGear/Embarcadero), um novo e importante capítulo iniciou em dezembro de 2006 com minha vinda para os Estados Unidos e hoje este capítulo chega ao fim. Hoje é meu último dia na Embarcadero Technologies.</p>
<p>Eu gostaria de agradecer a todos ao redor do mundo pelos grandes momentos que compartilhamos durante todos estes anos, por todas as conversas online, via email, telefone e frente a frente. Ter trabalhado como seu porta-voz durante todos estes anos foi algo único e que eu fiz com prazer, algo que irei levar sempre comigo.</p>
<p>Os 17 anos de Delphi só se tornou possível por causa do suporte desta grande e energética comunidade, continue enviando seus feedbacks para a <a href="https://forums.embarcadero.com/forum.jspa?forumID=67" target="_blank">Embarcadero</a> (newsgroup em inglês é um ótimo canal pra isso), especialmente agora com o FireMonkey que tem um longo caminho.</p>
<p>Meu blog continua e desenvolvimento de software continuará sendo o tópico principal. <strong><a href="http://youtube.com/user/andreanolanusse" rel="lightbox[auto_group1]" target="_blank">Meus vídeos no YouTube</a></strong> irão continuar lá e espero publicar outros vídeos no futuro, para finalizar você pode continuar ou começar a me seguir no Twitter <strong><a href="http://twitter.com/andreanolanusse" target="_blank">@andreanolanusse</a></strong></p>
<p>Estarei por perto e você pode me contactar através deste <a title="Contato" href="http://www.andreanolanusse.com/pt/contato/" target="_blank">link</a> ou através do e-mail andreano AT gmail DOT com</p>
<p>Agora é hora de começar a escrever o próximo capítulo e buscar novas oportunidades que sejam desafiadoras e divertidas.</p>
<p>Sinceramente,</p>
<p>Andreano Lanusse</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/disponibilizado-o-trial-datasheet-matriz-de-recursos-e-faq-para-as-versoes-xe2/" title="Disponibilizado o Trial, Datasheet, Matriz de Recursos e FAQ para as versões XE2">Disponibilizado o Trial, Datasheet, Matriz de Recursos e FAQ para as versões XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/delphi-conference-2011-chamada-para-submissao-de-palestras/" title="Delphi Conference 2011 &#8211; chamada para submissão de palestras">Delphi Conference 2011 &#8211; chamada para submissão de palestras</a></li><li><a href="http://www.andreanolanusse.com/pt/rad-studio-xe2-uma-nova-era-para-desenvolvedores-delphi-e-cbuilder/" title="RAD Studio XE2 uma nova era para desenvolvedores Delphi e C++Builder">RAD Studio XE2 uma nova era para desenvolvedores Delphi e C++Builder</a></li><li><a href="http://www.andreanolanusse.com/pt/exemplos-e-slides-do-delphi-meeting-2011/" title="Exemplos e slides do Delphi Meeting 2011">Exemplos e slides do Delphi Meeting 2011</a></li><li><a href="http://www.andreanolanusse.com/pt/video-de-lancamento-do-delphi-xe-cbuilder-xe-radphp-xe-e-delphi-prism-xe/" title="Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism">Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism</a></li><li><a href="http://www.andreanolanusse.com/pt/disponibilizada-nova-versao-do-delphi-xe-cbuilder-xe-delphi-prism-xe-e-radphp-xe/" title="Disponibilizada nova versão do Delphi XE, C++Builder XE, Delphi Prism XE e RadPHP XE">Disponibilizada nova versão do Delphi XE, C++Builder XE, Delphi Prism XE e RadPHP XE</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/bye-bye-embarcadero/feed/</wfw:commentRss>
		<slash:comments>55</slash:comments>
		</item>
		<item>
		<title>Video: Aprenda como utilizar DataSnap Connectors na prática</title>
		<link>http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=video-aprenda-como-utilizar-datasnap-connectors-na-pratica</link>
		<comments>http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 05:24: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>
		<category><![CDATA[Vídeo]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1541</guid>
		<description><![CDATA[<p>Neste vídeo explico como você pode utilizar DataSnap Connectors para conectar suas aplicações móveis, como exemplo mostro como conectar apps Windows Phone e Android, mas você pode conectar aplicações iOS e BlackBerry também. &#160; Posts relacionadosVídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2Vídeo: Threads e DataSnap – otimizando um servidor de aplicação – Delphi [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Neste vídeo explico como você pode utilizar DataSnap Connectors para conectar suas aplicações móveis, como exemplo mostro como conectar apps Windows Phone e Android, mas você pode conectar aplicações iOS e BlackBerry também.</p>
<p>&nbsp;</p>
<p><iframe src="http://www.youtube.com/embed/PpzB7TW-xg4" frameborder="0" width="480" height="360"></iframe></p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/video-desenvolvendo-para-ios-com-firemonkey-e-delphi-xe2/" title="Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2">Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/video-threads-e-datasnap-otimizando-um-servidor-de-aplicacao-delphi-conference-2010-brasil/" title="Vídeo: Threads e DataSnap – otimizando um servidor de aplicação – Delphi Conference 2010 Brasil">Vídeo: Threads e DataSnap – otimizando um servidor de aplicação – Delphi Conference 2010 Brasil</a></li><li><a href="http://www.andreanolanusse.com/pt/video-conectando-aplicacoes-android-com-datasnap-server-no-delphi-conference-2010-brasil/" title="Vídeo: Conectando aplicações Android com DataSnap Server no Delphi Conference 2010 Brasil">Vídeo: Conectando aplicações Android com DataSnap Server no Delphi Conference 2010 Brasil</a></li><li><a href="http://www.andreanolanusse.com/pt/video-estrategias-e-ferramentas-para-desenvolvimento-de-aplicacoes-datasnap-com-delphi-xe/" title="Vídeo: Estratégias e ferramentas para desenvolvimento de aplicações DataSnap com Delphi XE">Vídeo: Estratégias e ferramentas para desenvolvimento de aplicações DataSnap com Delphi XE</a></li><li><a href="http://www.andreanolanusse.com/pt/video-de-lancamento-do-delphi-xe-cbuilder-xe-radphp-xe-e-delphi-prism-xe/" title="Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism">Vídeo de lançamento da familia XE do Delphi, C++Builder, RadPHP e Delphi Prism</a></li><li><a href="http://www.andreanolanusse.com/pt/como-implementar-failover-e-load-balance-no-datasnap-2010/" title="Como implementar Failover e Load Balance no DataSnap 2010">Como implementar Failover e Load Balance no DataSnap 2010</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2</title>
		<link>http://www.andreanolanusse.com/pt/video-desenvolvendo-para-ios-com-firemonkey-e-delphi-xe2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=video-desenvolvendo-para-ios-com-firemonkey-e-delphi-xe2</link>
		<comments>http://www.andreanolanusse.com/pt/video-desenvolvendo-para-ios-com-firemonkey-e-delphi-xe2/#comments</comments>
		<pubDate>Wed, 18 Apr 2012 07:29:12 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[FireMonkey]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Embarcadero]]></category>
		<category><![CDATA[Vídeo]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1535</guid>
		<description><![CDATA[<p>No vídeo abaixo demonstro como você pode desenvolver aplicações para iOS (iPhone, iPad) com Delphi XE2 e FireMonkey, além dos vários aspectos e recursos disponíveis na plataforma. &#160; Divirta-se!!! Posts relacionadosVídeo: Desenvolvimento para iOS com FireMonkeyVideo: Aprenda como utilizar DataSnap Connectors na práticaDesenvolvendo o FireMonkey 3D Text Editor para Windows e MacVídeo: Delphi XE2 e [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>No vídeo abaixo demonstro como você pode desenvolver aplicações para iOS (iPhone, iPad) com Delphi XE2 e FireMonkey, além dos vários aspectos e recursos disponíveis na plataforma.</p>
<p>&nbsp;</p>
<p><iframe src="http://www.youtube.com/embed/cQ0XQfjqxok" frameborder="0" width="480" height="360"></iframe></p>
<p>Divirta-se!!!</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/video-desenvolvimento-para-ios-com-firemonkey/" title="Vídeo: Desenvolvimento para iOS com FireMonkey">Vídeo: Desenvolvimento para iOS com FireMonkey</a></li><li><a href="http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/" title="Video: Aprenda como utilizar DataSnap Connectors na prática">Video: Aprenda como utilizar DataSnap Connectors na prática</a></li><li><a href="http://www.andreanolanusse.com/pt/desenvolvendo-o-firemonkey-3d-text-editor-para-windows-e-mac/" title="Desenvolvendo o FireMonkey 3D Text Editor para Windows e Mac">Desenvolvendo o FireMonkey 3D Text Editor para Windows e Mac</a></li><li><a href="http://www.andreanolanusse.com/pt/video-delphi-xe2-e-firemonkey-app-no-windows-mac-e-ios/" title="Vídeo: Delphi XE2 e FireMonkey app no Windows, Mac e iOS">Vídeo: Delphi XE2 e FireMonkey app no Windows, Mac e iOS</a></li><li><a href="http://www.andreanolanusse.com/pt/bye-bye-embarcadero/" title="Bye Bye Embarcadero">Bye Bye Embarcadero</a></li><li><a href="http://www.andreanolanusse.com/pt/tdbxjsontools-copiarconverter-dados-entre-tdataset-tjsonobject-dbxreader/" title="TDBXJsonTools copiar/converter dados entre TDataSet &#8211; TJSONObject &#8211; DBXReader">TDBXJsonTools copiar/converter dados entre TDataSet &#8211; TJSONObject &#8211; DBXReader</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/video-desenvolvendo-para-ios-com-firemonkey-e-delphi-xe2/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Vídeo: Desenvolvimento para iOS com FireMonkey</title>
		<link>http://www.andreanolanusse.com/pt/video-desenvolvimento-para-ios-com-firemonkey/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=video-desenvolvimento-para-ios-com-firemonkey</link>
		<comments>http://www.andreanolanusse.com/pt/video-desenvolvimento-para-ios-com-firemonkey/#comments</comments>
		<pubDate>Sun, 15 Apr 2012 10:36:38 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[FireMonkey]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Vídeo]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1531</guid>
		<description><![CDATA[<p>Caso você tenha dúvidas sobre o desenvolvimento para iOS com Delphi e FireMonkey, recomendo assistir o vídeo abaixo onde em 62 minutos explico e demonstro diversos tipos de aplicações que podem ser feitas com esta tecnologia. Posts relacionadosVídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2Desenvolvendo o FireMonkey 3D Text Editor para Windows e MacVídeo: [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Caso você tenha dúvidas sobre o desenvolvimento para iOS com Delphi e FireMonkey, recomendo assistir o vídeo abaixo onde em 62 minutos explico e demonstro diversos tipos de aplicações que podem ser feitas com esta tecnologia.<br />
<iframe src="http://www.youtube.com/embed/cQ0XQfjqxok" frameborder="0" width="480" height="360"></iframe></p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/video-desenvolvendo-para-ios-com-firemonkey-e-delphi-xe2/" title="Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2">Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/desenvolvendo-o-firemonkey-3d-text-editor-para-windows-e-mac/" title="Desenvolvendo o FireMonkey 3D Text Editor para Windows e Mac">Desenvolvendo o FireMonkey 3D Text Editor para Windows e Mac</a></li><li><a href="http://www.andreanolanusse.com/pt/video-delphi-xe2-e-firemonkey-app-no-windows-mac-e-ios/" title="Vídeo: Delphi XE2 e FireMonkey app no Windows, Mac e iOS">Vídeo: Delphi XE2 e FireMonkey app no Windows, Mac e iOS</a></li><li><a href="http://www.andreanolanusse.com/pt/bye-bye-embarcadero/" title="Bye Bye Embarcadero">Bye Bye Embarcadero</a></li><li><a href="http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/" title="Video: Aprenda como utilizar DataSnap Connectors na prática">Video: Aprenda como utilizar DataSnap Connectors na prática</a></li><li><a href="http://www.andreanolanusse.com/pt/tdbxjsontools-copiarconverter-dados-entre-tdataset-tjsonobject-dbxreader/" title="TDBXJsonTools copiar/converter dados entre TDataSet &#8211; TJSONObject &#8211; DBXReader">TDBXJsonTools copiar/converter dados entre TDataSet &#8211; TJSONObject &#8211; DBXReader</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/video-desenvolvimento-para-ios-com-firemonkey/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TDBXJsonTools copiar/converter dados entre TDataSet &#8211; TJSONObject &#8211; DBXReader</title>
		<link>http://www.andreanolanusse.com/pt/tdbxjsontools-copiarconverter-dados-entre-tdataset-tjsonobject-dbxreader/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tdbxjsontools-copiarconverter-dados-entre-tdataset-tjsonobject-dbxreader</link>
		<comments>http://www.andreanolanusse.com/pt/tdbxjsontools-copiarconverter-dados-entre-tdataset-tjsonobject-dbxreader/#comments</comments>
		<pubDate>Mon, 19 Mar 2012 09:35:10 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[FireMonkey]]></category>
		<category><![CDATA[JSON]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1478</guid>
		<description><![CDATA[<p>Você pode copiar os dados de um DBXReader para um ClientDataSet e vice-versa utilizando o dbxExpress framework, provavelmente você já leu alguns dos meus  artigos aqui no blog onde explico como isso funciona em aplicações desktop, entretanto em plataformas móveis não temos o ClientDataSet e quando buscamos algo similar vem a pergunta, o que fazer? DataSnap [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Você pode copiar os dados de um DBXReader para um ClientDataSet e vice-versa utilizando o dbxExpress framework, provavelmente você já leu alguns dos meus  <a title="Copiando estrutura e dados de um DBXReader para ClientDataSet – DataSnap 2010" href="http://www.andreanolanusse.com/pt/copiando-estrutura-e-dados-de-um-dbxreader-para-clientdataset-datasnap-2010/" target="_blank">artigos</a> aqui no blog onde explico como isso funciona em aplicações desktop, entretanto em plataformas móveis não temos o ClientDataSet e quando buscamos algo similar vem a pergunta, o que fazer?</p>
<p>DataSnap Mobile Connectors tem um classe chamada TDBXJsonTools que permite a copia e conversão de dados entre DBXReader, TJSONObject, DBXReader e outros tipos de dados, pode ser utilizada em qualquer plataforma suportada pelos conectores, como: Java/Android, Java/BlackBerry, Objective-C, C#/Windows Phone e FreePascal.</p>
<p>Em aplicações desktop nativa utilizamos o TDBXDataSetReader.CopyReaderToClientDataSet(Reader, ClientDataSet) para copiar os dados do DBXReader para um ClientDataSet, no caso de aplicações móveis usamos TDBXJsonTools.CreateTDataSetFromJSON(DBXReader.asJSONObject).</p>
<p>Entretanto não estamos limitados a copia/conversão de dados, TDBXJsonTools traz maior flexibilidade na interação e transporte dos dados usando diferentes tipos de dados, além de usar o melhor dos tipos nativos em cada plataforma. Por exemplo, quando utilizamos DataSet em aplicações FireMonkey para iOS utilizamos a classe TDataSet que é parte da RTL do Delphi e FreePascal, já no caso de aplicações Java, TDataSet será uma extensão do TDBXReader e assim por diante.</p>
<p>DBXReader é unidirecional e com isso a navegação fica limitada, no entanto ao desenvolver aplicações FireMonkey para iOS você poderá copiar os dados do DBXReader para um DataSet que é bidirecional, isso irá permitir a navegação no DataSet e utilizar outros métodos do DataSet.</p>
<p>Abaixo a interface da classe TDBXJsonTools para FreePascal.</p>
<pre class="brush: delphi">  TDBXJsonTools = class
  public
    class procedure jsonToDBX(obj: TJSONValue; var value: TDBXValue; dbxTypeName: String);
    class procedure JSONToValueType(json: TJSONArray; var vt: TDBXValueType);
    class function DBXParametersToJSONObject(dbxParameters: TDSParams) : TJSONObject;
    class function DBXReaderToJSONObject(dbxReader: TDBXReader): TJSONObject;
    class function CreateTDataSetFromJSON(value: TJSONObject): TDataset;
    class function TDataSetToJSONObject(value: TDataset): TJSONObject;
    class function GetTFieldTypeByTDBXDataTypes(DBXDataTypes: TDBXDataTypes) : TFieldType;
    class function GetTDBXDataTypesByTFieldType(FieldType: TFieldType) : TDBXDataTypes;
    class function CreateTStreamFromJSONArray(value: TJSONArray): TStream;
    class function StreamToJSONArray(value: TStream): TJSONArray;
    class function JSONToTableType(value: TJSONValue; dbxTypeName: String): TObject;
    class function SerializeTableType(Objetc: TObject): TJSONObject;

  end;</pre>
<p>Eu continuo recomendando o uso do DBXReader como sua fonte principal de dados e quando necessário utilize os métodos da classe TDBXJsonTools.</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/bye-bye-embarcadero/" title="Bye Bye Embarcadero">Bye Bye Embarcadero</a></li><li><a href="http://www.andreanolanusse.com/pt/video-desenvolvendo-para-ios-com-firemonkey-e-delphi-xe2/" title="Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2">Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/video-desenvolvimento-para-ios-com-firemonkey/" title="Vídeo: Desenvolvimento para iOS com FireMonkey">Vídeo: Desenvolvimento para iOS com FireMonkey</a></li><li><a href="http://www.andreanolanusse.com/pt/disponibilizado-o-update-4-para-delphi-xe2-e-cbuilder-xe2/" title="Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2">Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/desenvolvendo-o-firemonkey-3d-text-editor-para-windows-e-mac/" title="Desenvolvendo o FireMonkey 3D Text Editor para Windows e Mac">Desenvolvendo o FireMonkey 3D Text Editor para Windows e Mac</a></li><li><a href="http://www.andreanolanusse.com/pt/apresentacoes-do-delphi-conference-2011-disponivel-para-download/" title="Apresentações do Delphi Conference 2011 disponíveis para download">Apresentações do Delphi Conference 2011 disponíveis para download</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/tdbxjsontools-copiarconverter-dados-entre-tdataset-tjsonobject-dbxreader/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2</title>
		<link>http://www.andreanolanusse.com/pt/disponibilizado-o-update-4-para-delphi-xe2-e-cbuilder-xe2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=disponibilizado-o-update-4-para-delphi-xe2-e-cbuilder-xe2</link>
		<comments>http://www.andreanolanusse.com/pt/disponibilizado-o-update-4-para-delphi-xe2-e-cbuilder-xe2/#comments</comments>
		<pubDate>Tue, 28 Feb 2012 21:44:12 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[FireMonkey]]></category>
		<category><![CDATA[Hotfix]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1472</guid>
		<description><![CDATA[<p>Delphi e C++Builder XE2 Update 4 requer reinstalação de todo o produto, será necessário desinstalar o seu RAD Studio XE2 atualmente instalado em sua máquina antes de instalar este update. Você pode obter este update de 3 formas: Atualizando via o mecanismo de Automatic Upgrade Manualmente através da opção Checking for Updates Fazendo o download a [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p><strong>Delphi e C++Builder XE2 Update 4 requer reinstalação de todo o produto,</strong> será necessário desinstalar o seu RAD Studio XE2 atualmente instalado em sua máquina antes de instalar este update.</p>
<p>Você pode obter este update de 3 formas:</p>
<ul>
<li><a title="" href="http://docwiki.embarcadero.com/RADStudio/en/Release_Notes_for_XE2_Update_4#Using_the_Automatic_Upgrade_Mechanism_or_Manually_Checking_for_Updates">Atualizando via o mecanismo de Automatic Upgrade</a></li>
<li><a title="" href="http://docwiki.embarcadero.com/RADStudio/en/Release_Notes_for_XE2_Update_4#Using_the_Automatic_Upgrade_Mechanism_or_Manually_Checking_for_Updates">Manualmente através da opção Checking for Updates</a></li>
<li><a title="" href="http://docwiki.embarcadero.com/RADStudio/en/Release_Notes_for_XE2_Update_4#Downloading_from_the_Registered_Users_Web_Page">Fazendo o download a partir da página de usuários registrados</a></li>
</ul>
<p>A lista completa de alterações, correções e novos recursos neste update está disponível <a href="http://docwiki.embarcadero.com/RADStudio/en/Release_Notes_for_XE2_Update_4" target="_blank">aqui</a>.</p>
<p>Dois novos recursos que destaco neste update é o suporte a impressora em Mac através do <a href="http://docwiki.embarcadero.com/RADStudio/en/Printing_from_a_FireMonkey_Application" target="_blank">FireMonkey Printing API</a> e o suporte a geração de proxy para FreePascal através do DataSnap Mobile Connector.</p>
<p>Você poder fazer o download do <a href="http://cc.embarcadero.com/item/28758">ISO para Delphi XE2 e C++Builder XE2 que inclui o Update 4 aqui.</a></p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/bye-bye-embarcadero/" title="Bye Bye Embarcadero">Bye Bye Embarcadero</a></li><li><a href="http://www.andreanolanusse.com/pt/desenvolvendo-o-firemonkey-3d-text-editor-para-windows-e-mac/" title="Desenvolvendo o FireMonkey 3D Text Editor para Windows e Mac">Desenvolvendo o FireMonkey 3D Text Editor para Windows e Mac</a></li><li><a href="http://www.andreanolanusse.com/pt/conectando-ao-postgresql-com-dbexpress-odbc-driver/" title="Conectando ao PostgreSQL com dbExpress ODBC driver">Conectando ao PostgreSQL com dbExpress ODBC driver</a></li><li><a href="http://www.andreanolanusse.com/pt/disponibilizado-update-2-para-delphi-xe2-cbuilder-xe2-e-radphp-xe2/" title="Disponibilizado Update 2 para Delphi XE2, C++Builder XE2 e RadPHP XE2">Disponibilizado Update 2 para Delphi XE2, C++Builder XE2 e RadPHP XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/video-delphi-xe2-e-firemonkey-app-no-windows-mac-e-ios/" title="Vídeo: Delphi XE2 e FireMonkey app no Windows, Mac e iOS">Vídeo: Delphi XE2 e FireMonkey app no Windows, Mac e iOS</a></li><li><a href="http://www.andreanolanusse.com/pt/hotfix-2-e-help-update-2-para-delphi-xe-cbuilder-xe-e-rad-studio-xe/" title="Hotfix 2 e Help Update 2 para Delphi XE, C++Builder XE e RAD Studio XE">Hotfix 2 e Help Update 2 para Delphi XE, C++Builder XE e RAD Studio XE</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/disponibilizado-o-update-4-para-delphi-xe2-e-cbuilder-xe2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Desenvolvendo o FireMonkey 3D Text Editor para Windows e Mac</title>
		<link>http://www.andreanolanusse.com/pt/desenvolvendo-o-firemonkey-3d-text-editor-para-windows-e-mac/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=desenvolvendo-o-firemonkey-3d-text-editor-para-windows-e-mac</link>
		<comments>http://www.andreanolanusse.com/pt/desenvolvendo-o-firemonkey-3d-text-editor-para-windows-e-mac/#comments</comments>
		<pubDate>Fri, 24 Feb 2012 00:34:17 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[FireMonkey]]></category>
		<category><![CDATA[Vídeo]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1468</guid>
		<description><![CDATA[<p>Durante o Webinar de comemoração do aniversário do Delphi apresentei uma aplicação FireMonkey 3D que venho desenvolvendo para demonstração já algum tempo. A aplicação é um editor de objetos 3D (3D Text Editor) que permite ao usuário interagir com objetos 3D através de rotação, mudança de cores, textura, tamanho dos objetos, exportar o texto 3D [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Durante o <a href="http://www.youtube.com/watch?v=R8goMTsEhUU" target="_blank">Webinar de comemoração do aniversário do Delphi</a> apresentei uma aplicação FireMonkey 3D que venho desenvolvendo para demonstração já algum tempo.</p>
<p>A aplicação é um editor de objetos 3D (3D Text Editor) que permite ao usuário interagir com objetos 3D através de rotação, mudança de cores, textura, tamanho dos objetos, exportar o texto 3D como imagem PNG e muito mais.</p>
<p>Essa aplicação é um excelente começo para quem está interessado em aprender sobre <a href="http://www.embarcadero.com/products/firemonkey" target="_blank">FireMonkey</a> e expõe muitos recursos interessantes, não somente mostra como usar 3D, animações, luz, camera, elementos 2D in containers 3D, etc., mas também como criar interfaces de usuário modernas, como tirar proveito do conceito de componente composto, como usar Scalable Vector Graphics (SVG) e mais.</p>
<p>Em breve estarei publicando uma série de artigos e vídeos em português que irão explicar em detalhes os recursos do FireMonkey utilizados neste aplicação, até lá lhe convido a assistir o vídeo (inglês) abaixo onde eu mostro a aplicação em ação.</p>
<p><iframe src="http://www.youtube.com/embed/ElYD4ENz2BA" frameborder="0" width="480" height="360"></iframe></p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/video-delphi-xe2-e-firemonkey-app-no-windows-mac-e-ios/" title="Vídeo: Delphi XE2 e FireMonkey app no Windows, Mac e iOS">Vídeo: Delphi XE2 e FireMonkey app no Windows, Mac e iOS</a></li><li><a href="http://www.andreanolanusse.com/pt/bye-bye-embarcadero/" title="Bye Bye Embarcadero">Bye Bye Embarcadero</a></li><li><a href="http://www.andreanolanusse.com/pt/video-desenvolvendo-para-ios-com-firemonkey-e-delphi-xe2/" title="Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2">Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/video-desenvolvimento-para-ios-com-firemonkey/" title="Vídeo: Desenvolvimento para iOS com FireMonkey">Vídeo: Desenvolvimento para iOS com FireMonkey</a></li><li><a href="http://www.andreanolanusse.com/pt/disponibilizado-o-update-4-para-delphi-xe2-e-cbuilder-xe2/" title="Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2">Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/conectando-ao-postgresql-com-dbexpress-odbc-driver/" title="Conectando ao PostgreSQL com dbExpress ODBC driver">Conectando ao PostgreSQL com dbExpress ODBC driver</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/desenvolvendo-o-firemonkey-3d-text-editor-para-windows-e-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lista de discussão sobre Intraweb no yahoo</title>
		<link>http://www.andreanolanusse.com/pt/lista-de-discussao-sobre-intraweb-no-yahoo/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=lista-de-discussao-sobre-intraweb-no-yahoo</link>
		<comments>http://www.andreanolanusse.com/pt/lista-de-discussao-sobre-intraweb-no-yahoo/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 21:01:31 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1460</guid>
		<description><![CDATA[<p>Para aqueles que utilizam Intraweb com Delphi ou C++Builder, existe um grupo para discussões relacionada ao tema no yahoo groups. Este grupo tem o suporte direto da Atozed e em português http://br.groups.yahoo.com/group/iwbr/ Além disso, se está anunciando na lista um curso de 36 horas, pago e online de Intraweb, maiores detalhes acesse a lista. O [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Para aqueles que utilizam Intraweb com Delphi ou C++Builder, existe um grupo para discussões relacionada ao tema no yahoo groups.</p>
<p>Este grupo tem o suporte direto da Atozed e em português <img src='http://www.andreanolanusse.com/pt/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://br.groups.yahoo.com/group/iwbr/" target="_blank">http://br.groups.yahoo.com/group/iwbr/</a></p>
<p>Além disso, se está anunciando na lista um curso de 36 horas, pago e online de Intraweb, maiores detalhes acesse a lista. O curso está programado para dia 28 de fevereiro.</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/bye-bye-embarcadero/" title="Bye Bye Embarcadero">Bye Bye Embarcadero</a></li><li><a href="http://www.andreanolanusse.com/pt/disponibilizado-o-update-4-para-delphi-xe2-e-cbuilder-xe2/" title="Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2">Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/desenvolvendo-o-firemonkey-3d-text-editor-para-windows-e-mac/" title="Desenvolvendo o FireMonkey 3D Text Editor para Windows e Mac">Desenvolvendo o FireMonkey 3D Text Editor para Windows e Mac</a></li><li><a href="http://www.andreanolanusse.com/pt/vendas-de-delphi-e-cbuilder-crescem-54-em-um-ano/" title="Vendas de Delphi e C++Builder crescem 54% em um ano">Vendas de Delphi e C++Builder crescem 54% em um ano</a></li><li><a href="http://www.andreanolanusse.com/pt/hora-de-seguir-em-frente/" title="Hora de seguir em frente">Hora de seguir em frente</a></li><li><a href="http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/lista-de-discussao-sobre-intraweb-no-yahoo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Um pouco da história do Delphi &#8211; 17 anos de inovação</title>
		<link>http://www.andreanolanusse.com/pt/um-pouco-da-historia-do-delphi-17-anos-de-inovacao/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=um-pouco-da-historia-do-delphi-17-anos-de-inovacao</link>
		<comments>http://www.andreanolanusse.com/pt/um-pouco-da-historia-do-delphi-17-anos-de-inovacao/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 20:59:48 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1457</guid>
		<description><![CDATA[<p>Hoje estamos comemorando os 17 anos do Delphi &#8211; e durante estes 17 anos de inovação contínua da linguagem Delphi, run-time library, Visual Component Library (VCL) e a nova plataforma para desenvolvimento de aplicações de negócio FireMonkey. Chegar aqui foi uma longa jornada, muita coisa aconteceu, lembro em 1995 quando eu estava desenvolvendo um ERP [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Hoje estamos comemorando os 17 anos do Delphi &#8211; e durante estes 17 anos de inovação contínua da linguagem Delphi, run-time library, Visual Component Library (VCL) e a nova plataforma para desenvolvimento de aplicações de negócio FireMonkey.</p>
<p>Chegar aqui foi uma longa jornada, muita coisa aconteceu, lembro em 1995 quando eu estava desenvolvendo um ERP em Paradox for Windows e um amigo chegou com um CD e me disse &#8220;Aprenda este produto, pois ele irá mudar o mundo do desenvolvimento de software&#8221;, aceitei o conselho e não me arrependo <img src='http://www.andreanolanusse.com/pt/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Os links abaixo contam um pouco da história do Delphi.</p>
<ul>
<li><a href="http://edn.embarcadero.com/article/20283" target="_blank">Borland History: Will The Real Frank Borland Please Stand Up?</a></li>
<li><a href="http://edn.embarcadero.com/article/20297" target="_blank">Memorabilia: The Adventures of TurboMan</a></li>
<li><a id="ArticleList_ctl23_hlArticle" href="http://edn.embarcadero.com/article/20396">Borland History: Why the name &#8220;Delphi?&#8221;</a></li>
<li><a id="ArticleList_ctl16_hlArticle" href="http://edn.embarcadero.com/article/32971">Historical Document: Delphi Product Definition 3rd Draft &#8211; May 13, 1993</a></li>
<li><a id="ArticleList_ctl15_hlArticle" href="http://edn.embarcadero.com/article/32975">Historical Document: Visual Component Library First Draft &#8211; May 24, 1993</a></li>
<li><a id="ArticleList_ctl14_hlArticle" href="http://edn.embarcadero.com/article/32977">Historical Documents: Delphi 1 launch demos source code, launch script, and marketing video</a></li>
<li><a href="http://edn.embarcadero.com/article/10245" target="_blank">Delphi 2 &#8211; Battle of the Visual Masters</a></li>
<li><a href="http://edn.embarcadero.com/article/10321" target="_blank">Delphi 2 &#8211; Building Web enabled apps with Delphi 2.0</a></li>
<li><a href="http://edn.embarcadero.com/article/10326" target="_blank">Delphi 2 &#8211; A Comparison of Client/Server Development Tools; PowerBuilder vs. Delphi</a></li>
<li><a href="http://www-personal.umd.umich.edu/~ldkronos/delphi/whyuse.html" target="_blank">Discovering Delphi &#8211; Why choose Delphi 2 over Visual Basic 4/5?</a></li>
<li>ebook &#8211; Secrets of Delphi 2 &#8211; Exposing Undocumented Features of Delphi &#8211; Download <a href="http://ftp.utcluj.ro/pub/docs/Docs/Secrets_of_Delphi_2.tgz" target="_blank">here</a></li>
<li>ebook &#8211; Peter Norton&#8217;s Guide to Delphi 2 [1996] &#8211; Download <a href="http://ftp.utcluj.ro/pub/docs/Docs/Peter_Nortons_Guide_to_Delphi_2.tgz" target="_blank">here</a></li>
<li>Borland Delphi 7 VCL Object Hierarchy/Poster/Chart &#8211; download <a href="http://www.simonjstuart.com/downloads/delphi7vcl.pdf" target="_blank">here</a></li>
</ul>
<div>Alguns vídeos históricos.</div>
<div>
<ul>
<li><a href="http://www.youtube.com/watch?v=BdQy3_BhhgA" target="_blank">Delphi Oktoberfest</a></li>
<li><a href="http://www.youtube.com/watch?v=lMzD-7iGdHI" target="_blank">Developer Tool Time</a></li>
<li><a href="http://www.youtube.com/watch?v=Aptgjeqg94o" target="_blank">Delphi Transformer</a></li>
<li><a href="http://www.youtube.com/watch?v=-tIq4ICREkE" target="_blank">1996 Borland Conference &#8211; Paul Gross and The Temple of Doom</a></li>
<li><a href="http://www.youtube.com/watch?v=Aptgjeqg94o" target="_blank">1997 Borland Conference &#8211; Software Wars</a></li>
<li><a href="http://www.youtube.com/watch?v=skLkPBQmN9k" target="_blank">1998 Borland/Inprise Conference &#8220;Camelot&#8221; Video</a></li>
<li><a href="http://www.youtube.com/watch?v=skLkPBQmN9k" target="_blank">2004 BORLAND CONFERENCE OPENING VIDEO</a></li>
</ul>
<p>Se você quiser se participar da festa, faça o registro para <a href="http://forms.embarcadero.com/forms/AMUSCA1202DelphiBDayCelebration2-14" target="_blank">webinar</a> de comemoração que está acontecendo hoje.</p>
<p>Vamos comemorar e Go Delphi!!!!</p>
<p>&nbsp;</p>
</div>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/bye-bye-embarcadero/" title="Bye Bye Embarcadero">Bye Bye Embarcadero</a></li><li><a href="http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/" title="Video: Aprenda como utilizar DataSnap Connectors na prática">Video: Aprenda como utilizar DataSnap Connectors na prática</a></li><li><a href="http://www.andreanolanusse.com/pt/video-desenvolvendo-para-ios-com-firemonkey-e-delphi-xe2/" title="Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2">Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/video-desenvolvimento-para-ios-com-firemonkey/" title="Vídeo: Desenvolvimento para iOS com FireMonkey">Vídeo: Desenvolvimento para iOS com FireMonkey</a></li><li><a href="http://www.andreanolanusse.com/pt/tdbxjsontools-copiarconverter-dados-entre-tdataset-tjsonobject-dbxreader/" title="TDBXJsonTools copiar/converter dados entre TDataSet &#8211; TJSONObject &#8211; DBXReader">TDBXJsonTools copiar/converter dados entre TDataSet &#8211; TJSONObject &#8211; DBXReader</a></li><li><a href="http://www.andreanolanusse.com/pt/disponibilizado-o-update-4-para-delphi-xe2-e-cbuilder-xe2/" title="Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2">Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/um-pouco-da-historia-do-delphi-17-anos-de-inovacao/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Vendas de Delphi e C++Builder crescem 54% em um ano</title>
		<link>http://www.andreanolanusse.com/pt/vendas-de-delphi-e-cbuilder-crescem-54-em-um-ano/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=vendas-de-delphi-e-cbuilder-crescem-54-em-um-ano</link>
		<comments>http://www.andreanolanusse.com/pt/vendas-de-delphi-e-cbuilder-crescem-54-em-um-ano/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 07:05:47 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Notícias]]></category>
		<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1455</guid>
		<description><![CDATA[<p>Nos últimos 3 anos não tem sido nada fácil para a economia mundial, especialmente para as empresas de tecnologia, durante a crise uma das principais áreas do orçamento de muitas empresas que foi duramente afetada foi a área de tecnologia. Nos últimos meses alguns números demonstram melhora na economia americana, Europa não vai muito bem, outros países [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Nos últimos 3 anos não tem sido nada fácil para a economia mundial, especialmente para as empresas de tecnologia, durante a crise uma das principais áreas do orçamento de muitas empresas que foi duramente afetada foi a área de tecnologia. Nos últimos meses alguns números demonstram melhora na economia americana, Europa não vai muito bem, outros países se recuperando mas podem ser afetados por uma crise na Europa, enfim ainda não estamos livres desta crise.</p>
<p>A boa notícia é que acabamos de divulgar o crescimento nas vendas do Delphi e C++Builder, crescimento este que foi de 54% sobre as vendas do ano anterior (2010), acelerando ainda mais nos últimos três anos de crescimento consecutivo de 15% ano-sobre-ano do Delphi e da linha de produtos do RAD Studio.</p>
<p>Este crescimento mostra claramente que estamos no caminho certo, diversas inovações nos últimos anos, como: FireMonkey, suporte a Windows, Mac, iOS e futuramente Android e outras plataformas estão fazendo a diferença. Comunidade Delphi e C++Builder podem comemorar.</p>
<p>Abaixo, o press release oficial divulgado esta semana.</p>
<p align="center"><strong>Embarcadero Technologies </strong><strong>Grows </strong><strong>Delphi and C++</strong><strong> by</strong><strong> 54% </strong><strong>in 2011</strong></p>
<p align="center"><em>Release of RAD Studio XE2 and</em><em> FireM</em><em>onkey Enhance </em><em>Cross Platform</em></p>
<p align="center"><em>Development Capabilities </em><em>and</em><em> </em><em>Drive </em><em>Growth</em></p>
<p>SAN FRANCISCO <strong>–</strong><strong>February </strong><strong>7</strong><strong>, 2012</strong>— Embarcadero Technologies, a leading provider of software solutions for application and database development, announced today that worldwide sales for its new RAD family of development tools, including RAD Studio, Delphi, and C++Builder, grew 54 percent over sales of the previous version in 2010, further accelerating the previous three years of consecutive 15 percent year-over-year growth of the Delphi and RAD Studio product lines.</p>
<p>With the release of both RAD Studio XE2 and FireMonkey in 2011, the RAD Studio suite now offers a powerful toolset to C++ and Delphi developers, enabling them to develop rich applications across desktop and mobile platforms with integrated native support for the most popular database platforms including Oracle, SQL Server, DB2, Sybase, InterBase, MySQL and more.</p>
<p>FireMonkey, a new addition to the RAD Studio family, is a next generation application platform that enables organizations to build visually stunning HD and 3D business applications for Windows (32-bit and 64-bit), Mac, and iOS. RAD Studio XE2 is a highly productive development environment for the popular Delphi, C++ and PHP programming languages. The extensive Embarcadero developer community is the second largest Windows developer community in the world after Microsoft.</p>
<p>“The world for Windows developers is changing. Every month Windows developers are facing an increasing demand for Mac and Mobile, and at the same time they are expected to raise the bar on user experience and interoperability.” said Michael Swindell, Senior Vice President of Marketing and Products at Embarcadero. “Developers need tools to help them deliver on these new demands without materially increasing timelines and budgets. We’re proud that RAD Studio XE2 is helping Windows developers tame these pressures and develop rich native applications across multiple platforms from a single codebase. And this is the key driver behind Delphi and C++Builder’s impressive growth.”</p>
<p>According to a recent Forrester report, nearly 50 percent of businesses in North America and Western Europe now issue Mac computers in the workplace, and 27 percent of those companies offer support for the iPad. It’s clear that Apple is becoming an important factor in the Enterprise, and developers must address that as they build business applications. RAD Studio’s cross platform development capabilities address the rapidly growing Mac and iOS markets, which enables developers to reach an additional 10 to 15 percent of the Desktop market with minimal additional development cost. Developers using RAD Studio can write an application once and compile to both Windows and Mac – no need for a separate development team using different development tools or duplicating effort to create Windows and Mac versions of an application.</p>
<p>In fall 2011, Embarcadero hosted a RAD Studio XE2 world launch tour, which brought the Delphi developer community together in countries across North America, APAC and EMEA. Over three months, more than 70 events were held in 30 countries with almost 10,000 registered. The events showcased the new features of both RAD Studio XE2 and FireMonkey, and provided the community with a chance to learn, connect, and share their experiences with RAD Studio. To learn more about the full line of Embarcadero application development tools including Delphi, C++Builder, and RAD Studio, please visit <a href="http://www.embarcadero.com/products/application-development">http://www.embarcadero.com/products/application-development</a>.</p>
<p><strong>About Embarcadero Technologies</strong></p>
<p>Embarcadero Technologies, Inc., a software management and delivery company, is a leading provider of database and application development software tools. By using Embarcadero‘s award-winning products, professionals can design systems right, build them faster and run them better, regardless of their platform or programming language. Three million users worldwide and 90 of the Fortune 100 companies rely on Embarcadero products to increase productivity, reduce costs, simplify change management and compliance, and accelerate innovation. Founded in 1993, Embarcadero is headquartered in San Francisco, with offices located around the world. Embarcadero is online at <a href="http://www.embarcadero.com/?utm_source=PR-01-24&amp;utm_medium=Press%2BRelease&amp;utm_content=EMBT-Home-Page-Link&amp;utm_campaign=PR-01-24-EMBT-Logica-Partnership">www.embarcadero.com</a>.</p>
<p align="center">###</p>
<p>Embarcadero, the Embarcadero Technologies logos and all other Embarcadero Technologies product or service names are trademarks or registered trademarks of Embarcadero Technologies, Inc. All other trademarks are the property of their respective owners.</p>
<p><strong>Press contacts:</strong></p>
<p>Lindsey Pappas</p>
<p>Atomic PR for Embarcadero</p>
<p>415-593-1400</p>
<p><a href="mailto:lindsey@atomicpr.com">lindsey@atomicpr.com</a></p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/bye-bye-embarcadero/" title="Bye Bye Embarcadero">Bye Bye Embarcadero</a></li><li><a href="http://www.andreanolanusse.com/pt/disponibilizado-o-update-4-para-delphi-xe2-e-cbuilder-xe2/" title="Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2">Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/desenvolvendo-o-firemonkey-3d-text-editor-para-windows-e-mac/" title="Desenvolvendo o FireMonkey 3D Text Editor para Windows e Mac">Desenvolvendo o FireMonkey 3D Text Editor para Windows e Mac</a></li><li><a href="http://www.andreanolanusse.com/pt/lista-de-discussao-sobre-intraweb-no-yahoo/" title="Lista de discussão sobre Intraweb no yahoo">Lista de discussão sobre Intraweb no yahoo</a></li><li><a href="http://www.andreanolanusse.com/pt/hora-de-seguir-em-frente/" title="Hora de seguir em frente">Hora de seguir em frente</a></li><li><a href="http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/vendas-de-delphi-e-cbuilder-crescem-54-em-um-ano/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Hora de seguir em frente</title>
		<link>http://www.andreanolanusse.com/pt/hora-de-seguir-em-frente/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=hora-de-seguir-em-frente</link>
		<comments>http://www.andreanolanusse.com/pt/hora-de-seguir-em-frente/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 10:00:35 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1420</guid>
		<description><![CDATA[<p>Tem certas coisas que não podemos deixar passar em branco, durante todo o ano tento manter meus artigos relacionados a desenvolvimento de software e tecnologia relacionadas, mas desta vez preciso comentar sobre algo que estamos fazendo aqui na Embarcadero e está relacionado a oportunidade de migrar para XE2 e ainda levar várias ferramentas grátis. Se [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Tem certas coisas que não podemos deixar passar em branco, durante todo o ano tento manter meus artigos relacionados a desenvolvimento de software e tecnologia relacionadas, mas desta vez preciso comentar sobre algo que estamos fazendo aqui na Embarcadero e está relacionado a oportunidade de migrar para XE2 e ainda levar várias ferramentas grátis.</p>
<p>Se você pretende adquirir novas licenças ou ainda não atualizou para <a href="http://www.embarcadero.com/br/products/delphi" target="_blank">Delphi XE2</a>, <a href="http://www.embarcadero.com/br/products/cbuilder" target="_blank">C++Builder XE2</a>, <a href="http://www.embarcadero.com/br/products/rad-studio" target="_blank">RAD Studio XE2</a>, agora é hora. Ao adquirir uma das seguintes edições você pode levar até 4 ferramentas grátis, além de um voucher para a <a href="http://www.embarcadero.com/br/certification" target="_blank">Certificação Delphi Developer</a> para cada licença adquirida.</p>
<table width="80%" border="1" cellspacing="0" cellpadding="5">
<tbody>
<tr>
<td align="left"><strong>Adquira Delphi, C++Builder ou RAD Studio XE2&#8230;</strong></td>
<td align="left"><strong>E receba gratuitamente</strong></td>
</tr>
<tr>
<td align="left">Professional edition</td>
<td align="left">
<ul>
<li>Rapid SQL XE2 – GRÁTIS!</li>
<li>FastCube – GRÁTIS!</li>
<li>Uma Certificação Delphi Developer &#8211; GRÁTIS!</li>
</ul>
</td>
</tr>
<tr>
<td align="left">Enterprise edition</td>
<td align="left">
<ul>
<li>Rapid SQL XE2 – GRÁTIS!</li>
<li>FastCube – GRÁTIS!</li>
<li>DB Optimizer &#8211; GRÁTIS!</li>
<li>Uma Certificação Delphi Developer &#8211; GRÁTIS!</li>
</ul>
</td>
</tr>
<tr>
<td align="left">Architect edition</td>
<td align="left">
<ul>
<li>Rapid SQL XE2 – GRÁTIS!</li>
<li>FastCube – GRÁTIS!</li>
<li>DB Optimizer &#8211; GRÁTIS!</li>
<li>DB Change Manager &#8211; GRÁTIS!</li>
<li>Uma Certificação Delphi Developer &#8211; GRÁTIS!</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>Recentemente publiquei o artigo em inglês <a title="White Paper: Razões para migrar para o Delphi XE2 | O que você pode ter perdido desde o Delphi 7" href="http://www.andreanolanusse.com/pt/white-paper-razoes-para-migrar-para-o-delphi-xe2-o-que-voce-pode-ter-perdido-desde-o-delphi-7/">&#8220;Razões para migrar para o Delphi XE2 | O que você pode ter perdido desde o Delphi 7&#8243;</a>, que pode lhe ajudar na decisão sobre migrar.</p>
<p>Aproveita porque essa promoção, pois acaba dia 24 de dezembro de 2011, você pode obter mais informações neste <a href="http://www.embarcadero.com/br/radoffer" target="_blank">aqui</a> ou contactar a E do Brasil nosso parceiro no Brasil.</p>
<p>É hora de seguir em frente <img src='http://www.andreanolanusse.com/pt/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/bye-bye-embarcadero/" title="Bye Bye Embarcadero">Bye Bye Embarcadero</a></li><li><a href="http://www.andreanolanusse.com/pt/disponibilizado-o-update-4-para-delphi-xe2-e-cbuilder-xe2/" title="Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2">Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/desenvolvendo-o-firemonkey-3d-text-editor-para-windows-e-mac/" title="Desenvolvendo o FireMonkey 3D Text Editor para Windows e Mac">Desenvolvendo o FireMonkey 3D Text Editor para Windows e Mac</a></li><li><a href="http://www.andreanolanusse.com/pt/lista-de-discussao-sobre-intraweb-no-yahoo/" title="Lista de discussão sobre Intraweb no yahoo">Lista de discussão sobre Intraweb no yahoo</a></li><li><a href="http://www.andreanolanusse.com/pt/vendas-de-delphi-e-cbuilder-crescem-54-em-um-ano/" title="Vendas de Delphi e C++Builder crescem 54% em um ano">Vendas de Delphi e C++Builder crescem 54% em um ano</a></li><li><a href="http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/hora-de-seguir-em-frente/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Apresentações do Delphi Conference 2011 disponíveis para download</title>
		<link>http://www.andreanolanusse.com/pt/apresentacoes-do-delphi-conference-2011-disponivel-para-download/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=apresentacoes-do-delphi-conference-2011-disponivel-para-download</link>
		<comments>http://www.andreanolanusse.com/pt/apresentacoes-do-delphi-conference-2011-disponivel-para-download/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 22:00:18 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi Conference 2011]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Delphi Prism]]></category>
		<category><![CDATA[FireMonkey]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1417</guid>
		<description><![CDATA[<p>Já está disponível os slides utilizados pelos palestrantes do Delphi Conference 2011, sem dúvida a melhor Delphi Conference já realizada, mais uma vez agradeço a todos que prestigiaram o evento, palestrantes e nossa equipe. Os slides disponibilizados trazem informações valiosas, ao final de cada slide você irá encontrar o link para baixar o código fonte dos [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Já está disponível os slides utilizados pelos palestrantes do Delphi Conference 2011, sem dúvida a melhor Delphi Conference já realizada, mais uma vez agradeço a todos que prestigiaram o evento, palestrantes e nossa equipe.</p>
<p>Os slides disponibilizados trazem informações valiosas, ao final de cada slide você irá encontrar o link para baixar o código fonte dos exemplos utilizados na respectiva apresentação.</p>
<p>Para efetuar o download das apresentações você precisa <a title="Criar conta no EDN" href="http://members.embarcadero.com" target="_blank">criar</a> gratuitamente ou utilizar sua conta do EDN (Embarcadero Developer Network), ao efetuar seu login você terá acesso a todo o conteúdo.</p>
<ul>
<li><a target="_blank" href="http://cc.embarcadero.com/download.aspx?id=28668" class="avia-button  light  custom small" style="background-color:#123456;border-color:#123456"><span class="avia-download"></span></a> - Delphi XE2 e FireMonkey</li>
<li><a target="_blank" href="http://cc.embarcadero.com/download.aspx?id=28661" class="avia-button  light  custom small" style="background-color:#123456;border-color:#123456"><span class="avia-download"></span></a> - Desenvolvendo para Mac e iOS com Delphi XE2 e FireMonkey</li>
<li><a target="_blank" href="http://cc.embarcadero.com/download.aspx?id=28667" class="avia-button  light  custom small" style="background-color:#123456;border-color:#123456"><span class="avia-download"></span></a> - Criando componentes para FireMonkey</li>
<li><a target="_blank" href="http://cc.embarcadero.com/download.aspx?id=28666" class="avia-button  light  custom small" style="background-color:#123456;border-color:#123456"><span class="avia-download"></span></a> - Introdução ao LiveBinding (em inglês)</li>
<li><a target="_blank" href="http://cc.embarcadero.com/download.aspx?id=28653" class="avia-button  light  custom small" style="background-color:#123456;border-color:#123456"><span class="avia-download"></span></a> - Otimizando interfaces VCL e FireMonkey com Styles</li>
<li><a target="_blank" href="http://cc.embarcadero.com/download.aspx?id=28665" class="avia-button  light  custom small" style="background-color:#123456;border-color:#123456"><span class="avia-download"></span></a> - Maximizando produtividade com Delphi XE2 Ultimate e DB PowerStudio</li>
<li><a target="_blank" href="http://cc.embarcadero.com/download.aspx?id=28664" class="avia-button  light  custom small" style="background-color:#123456;border-color:#123456"><span class="avia-download"></span></a> - Maximizando a usabilidade de Dicionários de Dados</li>
<li><a target="_blank" href="http://cc.embarcadero.com/download.aspx?id=28663" class="avia-button  light  custom small" style="background-color:#123456;border-color:#123456"><span class="avia-download"></span></a> - Desenvolvimento 64-bits com Delphi XE2</li>
<li><a target="_blank" href="http://cc.embarcadero.com/download.aspx?id=28662" class="avia-button  light  custom small" style="background-color:#123456;border-color:#123456"><span class="avia-download"></span></a> &#8211; DataSnap Connectors</li>
<li><a target="_blank" href="http://cc.embarcadero.com/download.aspx?id=28656" class="avia-button  light  custom small" style="background-color:#123456;border-color:#123456"><span class="avia-download"></span></a> - Estendendo DataSnap REST Interfaces com jQuery e RELAX</li>
<li><a target="_blank" href="http://cc.embarcadero.com/download.aspx?id=28660" class="avia-button  light  custom small" style="background-color:#123456;border-color:#123456"><span class="avia-download"></span></a> - Técnicas para identificar problemas de memória em servidores DataSnap</li>
<li><a target="_blank" href="http://cc.embarcadero.com/download.aspx?id=28659" class="avia-button  light  custom small" style="background-color:#123456;border-color:#123456"><span class="avia-download"></span></a> - TMS Aurelius – Framework Multi-Plataforma para Mapeamento Objeto-Relacional</li>
<li><a target="_blank" href="http://cc.embarcadero.com/download.aspx?id=28658" class="avia-button  light  custom small" style="background-color:#123456;border-color:#123456"><span class="avia-download"></span></a> - Da RTTI ao LiveBinding - Manipulando objetos com criatividade</li>
<li><a target="_blank" href="http://cc.embarcadero.com/download.aspx?id=28657" class="avia-button  light  custom small" style="background-color:#123456;border-color:#123456"><span class="avia-download"></span></a> - Boas práticas no desenvolvimento de apps multithreads</li>
<li><a target="_blank" href="http://cc.embarcadero.com/download.aspx?id=28655" class="avia-button  light  custom small" style="background-color:#123456;border-color:#123456"><span class="avia-download"></span></a> - Desenvolvendo para Windows Phone 7 com Prism XE2</li>
<li><a target="_blank" href="http://cc.embarcadero.com/download.aspx?id=28654" class="avia-button  light  custom small" style="background-color:#123456;border-color:#123456"><span class="avia-download"></span></a> - Desmistificando Expressões Regulares</li>
<li><a target="_blank" href="http://cc.embarcadero.com/download.aspx?id=28652" class="avia-button  light  custom small" style="background-color:#123456;border-color:#123456"><span class="avia-download"></span></a> - Usando Fortes Report em aplicações corporativas</li>
<li><a target="_blank" href="http://cc.embarcadero.com/download.aspx?id=28651" class="avia-button  light  custom small" style="background-color:#123456;border-color:#123456"><span class="avia-download"></span></a> &#8211; Integração Delphi e Kinect</li>
<li><a target="_blank" href="http://cc.embarcadero.com/download.aspx?id=28669" class="avia-button  light  custom small" style="background-color:#123456;border-color:#123456"><span class="avia-download"></span></a> - Técnicas para Implementação do PAF em Delphi XE2</li>
<li><a target="_blank" href="http://cc.embarcadero.com/download.aspx?id=28650" class="avia-button  light  custom small" style="background-color:#123456;border-color:#123456"><span class="avia-download"></span></a> &#8211; Mini-curso Integração continua na prática</li>
<li><a target="_blank" href="http://cc.embarcadero.com/download.aspx?id=28649" class="avia-button  light  custom small" style="background-color:#123456;border-color:#123456"><span class="avia-download"></span></a> &#8211; Mini-curso Utilizando ACBr para automação comercial</li>
</ul>
<p>Além disso, disponibilizamos a gravação de algumas palestras da Delphi Conference 2011 e você pode assistir <a href="http://bit.ly/vrXzao" target="_blank">aqui</a>.</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/bye-bye-embarcadero/" title="Bye Bye Embarcadero">Bye Bye Embarcadero</a></li><li><a href="http://www.andreanolanusse.com/pt/video-desenvolvendo-para-ios-com-firemonkey-e-delphi-xe2/" title="Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2">Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/video-desenvolvimento-para-ios-com-firemonkey/" title="Vídeo: Desenvolvimento para iOS com FireMonkey">Vídeo: Desenvolvimento para iOS com FireMonkey</a></li><li><a href="http://www.andreanolanusse.com/pt/tdbxjsontools-copiarconverter-dados-entre-tdataset-tjsonobject-dbxreader/" title="TDBXJsonTools copiar/converter dados entre TDataSet &#8211; TJSONObject &#8211; DBXReader">TDBXJsonTools copiar/converter dados entre TDataSet &#8211; TJSONObject &#8211; DBXReader</a></li><li><a href="http://www.andreanolanusse.com/pt/disponibilizado-o-codigo-fonte-em-delphi-do-firemonkey-3d-text-editor/" title="Disponibilizado o código fonte em Delphi do FireMonkey 3D Text Editor">Disponibilizado o código fonte em Delphi do FireMonkey 3D Text Editor</a></li><li><a href="http://www.andreanolanusse.com/pt/disponibilizado-o-update-4-para-delphi-xe2-e-cbuilder-xe2/" title="Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2">Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/apresentacoes-do-delphi-conference-2011-disponivel-para-download/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>White Paper: Razões para migrar para o Delphi XE2 &#124; O que você pode ter perdido desde o Delphi 7</title>
		<link>http://www.andreanolanusse.com/pt/white-paper-razoes-para-migrar-para-o-delphi-xe2-o-que-voce-pode-ter-perdido-desde-o-delphi-7/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=white-paper-razoes-para-migrar-para-o-delphi-xe2-o-que-voce-pode-ter-perdido-desde-o-delphi-7</link>
		<comments>http://www.andreanolanusse.com/pt/white-paper-razoes-para-migrar-para-o-delphi-xe2-o-que-voce-pode-ter-perdido-desde-o-delphi-7/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 04:09:17 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1412</guid>
		<description><![CDATA[<p>Se você ainda continua usando Delphi 7 ou alguma das versões anteriores, recomendo que você reserve um tempo na sua agenda e leia este artigo. Delphi tem crescido muito e a cada ano tem trazido diversas novidades muito interessantes desde a sua versão Delphi 7. Este artigo traz várias razões para migrar, além de uma [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</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"><img class="size-full wp-image-1413 alignleft" style="border-style: initial; border-color: initial; border-width: 0px; margin: 4px;" title="Razões para migrar para o Delphi XE2" src="http://www.andreanolanusse.com/pt/wp-content/uploads/2011/11/Reasons_to_migrate_to_DelphiXE2-Cover.png" alt="" width="226" height="291" /></a></p>
<p>Se você ainda continua usando Delphi 7 ou alguma das versões anteriores, recomendo que você reserve um tempo na sua agenda e leia este artigo. Delphi tem crescido muito e a cada ano tem trazido diversas novidades muito interessantes desde a sua versão Delphi 7.</p>
<p>Este artigo traz várias razões para migrar, além de uma visão geral de todos os novos recursos incorporados desde a versão 7, onde Delphi era um IDE para desenvolvimento de aplicações Windows 32-bit e se tornou um IDE para desenvolvimento Windows 64-bit, Mac e iOS.</p>
<p>Se você já leu o meu artigo &#8220;<a href="http://cc.embarcadero.com/download.aspx?id=26604" target="_blank">Razões para migrar do Delphi 7 para o Delphi 2009</a>&#8221; em português ou o artigo em inglês &#8220;Reasons to migrate to Delphi XE&#8221;, este artigo é uma atualização que inclui os novos recursos das versões Delphi 2010, XE e XE2.</p>
<p>Gostaria de lembrar que ao migrar para o Delphi XE2 você recebe <a href="http://www.embarcadero.com/products/rad-studio/previous-versions">as versões anteriores</a> sem custo adicional. Por exemplo, comprando Delphi XE2 você recebe Delphi 7, Delphi 2007, Delphi 2009, Delphi 2010 e Delphi XE.</p>
<p>Eu espero que esse artigo responda a todas as suas dúvidas, caso ainda fique alguma dúvida comente aqui no post que estarei respondendo.</p>
<p>Faça o download do artigo <a href="http://dl.dropbox.com/u/47097751/Reasons%20to%20migrate%20to%20Delphi%20XE2%20-%20Portuguese%20Paper.zip" target="_blank"><strong>aqui</strong></a>.</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/bye-bye-embarcadero/" title="Bye Bye Embarcadero">Bye Bye Embarcadero</a></li><li><a href="http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/" title="Video: Aprenda como utilizar DataSnap Connectors na prática">Video: Aprenda como utilizar DataSnap Connectors na prática</a></li><li><a href="http://www.andreanolanusse.com/pt/video-desenvolvendo-para-ios-com-firemonkey-e-delphi-xe2/" title="Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2">Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/video-desenvolvimento-para-ios-com-firemonkey/" title="Vídeo: Desenvolvimento para iOS com FireMonkey">Vídeo: Desenvolvimento para iOS com FireMonkey</a></li><li><a href="http://www.andreanolanusse.com/pt/tdbxjsontools-copiarconverter-dados-entre-tdataset-tjsonobject-dbxreader/" title="TDBXJsonTools copiar/converter dados entre TDataSet &#8211; TJSONObject &#8211; DBXReader">TDBXJsonTools copiar/converter dados entre TDataSet &#8211; TJSONObject &#8211; DBXReader</a></li><li><a href="http://www.andreanolanusse.com/pt/disponibilizado-o-update-4-para-delphi-xe2-e-cbuilder-xe2/" title="Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2">Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/white-paper-razoes-para-migrar-para-o-delphi-xe2-o-que-voce-pode-ter-perdido-desde-o-delphi-7/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;</title>
		<link>http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented</link>
		<comments>http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 23:57:19 +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/pt/?p=1409</guid>
		<description><![CDATA[<p>Se você já utilizou o método TDBXDataSetReader.CopyReaderToClientDataSet provavelmente já se deparou com a mensagem &#8220;Feature not implemented&#8221;, esta exception ocorre porque o método CopyReaderToClientDataSet não suporta a cópia de campos Blob de um DBXReader para um ClientDataSet. A partir do Delphi XE2 Update 2 isso não é mais problema, o suporte a blob no método CopyReaderToClientDataSet [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Se você já utilizou o método TDBXDataSetReader.CopyReaderToClientDataSet provavelmente já se deparou com a mensagem &#8220;Feature not implemented&#8221;, esta exception ocorre porque o método CopyReaderToClientDataSet não suporta a cópia de campos Blob de um DBXReader para um ClientDataSet.</p>
<p>A partir do <a title="Disponibilizado Update 2 para Delphi XE2, C++Builder XE2 e RadPHP XE2" href="http://www.andreanolanusse.com/pt/disponibilizado-update-2-para-delphi-xe2-cbuilder-xe2-e-radphp-xe2/">Delphi XE2 Update 2</a> isso não é mais problema, o suporte a blob no método CopyReaderToClientDataSet foi implementando.</p>
<p>Para saber como utilizar o método CopyReaderToClientDataSet na prática leia o artigo &#8220;<a title="Copiando estrutura e dados de um DBXReader para ClientDataSet – DataSnap 2010" href="http://www.andreanolanusse.com/pt/copiando-estrutura-e-dados-de-um-dbxreader-para-clientdataset-datasnap-2010/">Copiando estrutura e dados de um DBXReader para ClientDataSet  - DataSnap</a>&#8220;</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/conectando-ao-postgresql-com-dbexpress-odbc-driver/" title="Conectando ao PostgreSQL com dbExpress ODBC driver">Conectando ao PostgreSQL com dbExpress ODBC driver</a></li><li><a href="http://www.andreanolanusse.com/pt/monitoramento-e-controle-de-conexoes-em-datasnap-xe2/" title="Monitoramento e controle de conexões em DataSnap XE2">Monitoramento e controle de conexões em DataSnap XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/implementando-cache-de-dados-em-servidores-datasnap/" title="Implementando cache de dados em servidores DataSnap">Implementando cache de dados em servidores DataSnap</a></li><li><a href="http://www.andreanolanusse.com/pt/exemplos-e-slides-do-delphi-meeting-2011/" title="Exemplos e slides do Delphi Meeting 2011">Exemplos e slides do Delphi Meeting 2011</a></li><li><a href="http://www.andreanolanusse.com/pt/videos-sobre-datasnap-para-2011-o-que-voce-gostaria-de-ver/" title="Vídeos sobre DataSnap para 2011 &#8211; o que você gostaria de ver?">Vídeos sobre DataSnap para 2011 &#8211; o que você gostaria de ver?</a></li><li><a href="http://www.andreanolanusse.com/pt/apresentacoes-do-delphi-conference-2010-disponivel-para-download/" title="Apresentações do Delphi Conference 2010 disponível para download">Apresentações do Delphi Conference 2010 disponível para download</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Conectando ao PostgreSQL com dbExpress ODBC driver</title>
		<link>http://www.andreanolanusse.com/pt/conectando-ao-postgresql-com-dbexpress-odbc-driver/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=conectando-ao-postgresql-com-dbexpress-odbc-driver</link>
		<comments>http://www.andreanolanusse.com/pt/conectando-ao-postgresql-com-dbexpress-odbc-driver/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 07:41:23 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[FireMonkey]]></category>
		<category><![CDATA[dbExpress]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1403</guid>
		<description><![CDATA[<p>dbExpress traz o novo driver ODBC no Delphi XE2 e C++Builder XE2, através este driver você pode conectar a qualquer aplicações FireMonkey e VCL a qualquer base de dados que disponibilize um driver ODBC, este driver é compatível com Windows, estamos avaliando a possibilidade de disponibilizar futuramente para Mac. Para mostrar na prática como funciona, [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>dbExpress traz o novo driver ODBC no <a href="http://www.embarcadero.com/products/delphi" target="_blank">Delphi</a> XE2 e <a href="http://www.embarcadero.com/products/cbuilder" target="_blank">C++Builder</a> XE2, através este driver você pode conectar a qualquer aplicações FireMonkey e VCL a qualquer base de dados que disponibilize um driver ODBC, este driver é compatível com Windows, estamos avaliando a possibilidade de disponibilizar futuramente para Mac.</p>
<p>Para mostrar na prática como funciona, criei uma aplicação <a href="http://www.embarcadero.com/products/firemonkey" target="_blank">FireMonkey</a> que conecta a uma base de dados PostgreSQL.</p>
<p>Como requisito, você precisa instalar na máquina onde a aplicação será executada o driver ODBC do PostgreSQL, que pode ser baixado <a href="http://ftp.postgresql.org/pub/odbc/versions/msi/" target="_blank">aqui</a>. Vale lembrar que aplicações compiladas como 32-bit requerem a versão 32-bit do driver ODBC da base de dados a ser utilizada, para aplicações 64-bit será necessário o driver ODBC 64-bit.</p>
<p>Após instalado o driver, crie e configure o User DSN ou System DSN no ODBC Data Source Administrator (odbcad32.exe):</p>
<p><strong>Instruções para windows 64-bit</strong></p>
<ul>
<li>Para aplicações 32-bit use o c:\Windows\SysWOW64\odbcad32.exe</li>
<li>Para aplicações 64-bit use o c:\Windows\system32\odbcad32.exe</li>
</ul>
<p><strong>Instruções para windows 32-bit</strong></p>
<ul>
<li>Use o c:\Windows\system32\odbcad32.exe</li>
</ul>
<div><a href="http://www.andreanolanusse.com/pt/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/pt/wp-content/uploads/2011/11/ODBC-PostgreSQL.png" alt="" width="291" height="399" /></a></div>
<p>O próximo passe é criar um alias dbExpress ODBC no Data Explorer, onde Database Name é o nome do Data Source criado anteriormente, no meu exemplo este Data Source se chama PostgreSQL35W. Todas as informações relacionada a qual base de dados conectar, usuário e senha já foram configuradas no Data Source, você pode sobrescrever o usuário e senha na conexão dbExpress.</p>
<p style="text-align: center;"><a href="http://www.andreanolanusse.com/pt/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/pt/wp-content/uploads/2011/11/DataExplorer-PostgreSQL.png" alt="" width="230" height="379" /></a></p>
<p>Supondo que você já saiba como utilizar os componentes SQLConnection, DataSetProvider e ClientDataSet ou SimpleDataSet e DataSource, basta conectá-los da mesma forma que você sempre fez com aplicações que utilizam os componentes dbExpress. A configuração do SQLConnection será configurada conforme abaixo:</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/pt/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/pt/wp-content/uploads/2011/11/IDE-ODBC-PostgreSQL.png" alt="" width="732" height="428" /></a></p>
<p>Além de poder utilizar os componentes dbExpress em aplicações VCL e FireMonkey, você pode utilizar o dbExpress framework para conectar a bancos de dados que não tenham um driver nativo. A figura abaixo mostra a aplicação FireMonkey conectada a PostgreSQL através do dbExpress ODBC driver.</p>
<p style="text-align: center;"><a href="http://www.andreanolanusse.com/pt/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/pt/wp-content/uploads/2011/11/FMI_dbExpress_ODBC.png" alt="" width="621" height="410" /></a></p>
<p>Download do código fonte disponível <a href="https://radstudiodemos.svn.sourceforge.net/svnroot/radstudiodemos/branches/RadStudio_XE2/Delphi/Database/dbExpress/ODBCPostgreSQL" target="_blank">aqui</a>.</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/bye-bye-embarcadero/" title="Bye Bye Embarcadero">Bye Bye Embarcadero</a></li><li><a href="http://www.andreanolanusse.com/pt/disponibilizado-o-update-4-para-delphi-xe2-e-cbuilder-xe2/" title="Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2">Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/desenvolvendo-o-firemonkey-3d-text-editor-para-windows-e-mac/" title="Desenvolvendo o FireMonkey 3D Text Editor para Windows e Mac">Desenvolvendo o FireMonkey 3D Text Editor para Windows e Mac</a></li><li><a href="http://www.andreanolanusse.com/pt/usando-dbexpress-framework-no-windows-e-mac-com-cbuilder/" title="Usando dbExpress Framework no Windows e Mac com C++Builder">Usando dbExpress Framework no Windows e Mac com C++Builder</a></li><li><a href="http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;</a></li><li><a href="http://www.andreanolanusse.com/pt/video-delphi-xe2-e-firemonkey-app-no-windows-mac-e-ios/" title="Vídeo: Delphi XE2 e FireMonkey app no Windows, Mac e iOS">Vídeo: Delphi XE2 e FireMonkey app no Windows, Mac e iOS</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/conectando-ao-postgresql-com-dbexpress-odbc-driver/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Vagas esgotadas para o Delphi Conference 2011</title>
		<link>http://www.andreanolanusse.com/pt/vagas-esgotadas-para-o-delphi-conference-2011/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=vagas-esgotadas-para-o-delphi-conference-2011</link>
		<comments>http://www.andreanolanusse.com/pt/vagas-esgotadas-para-o-delphi-conference-2011/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 23:34:16 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi Conference 2011]]></category>
		<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1399</guid>
		<description><![CDATA[<p>Com um mês de antecedência o Delphi Conference 2011 está com as vagas esgotadas, a partir de agora novas inscrições entram na lista de espera. A agenda com as 25 palestras já foi publicada, palestras e palestrantes de alto nível abordando temas como FireMonkey, aplicações mobile conectadas a servidores DataSnap, LiveBinding, Mac, iOS, Android, mini-cursos [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Com um mês de antecedência o <a href="http://www.delphiconference.com.br">Delphi Conference 2011</a> está com as vagas esgotadas, a partir de agora novas inscrições entram na lista de espera.</p>
<p>A <a href="http://www.delphiconference.com.br/agenda.html" target="_blank">agenda</a> com as 25 palestras já foi publicada, palestras e palestrantes de alto nível abordando temas como <a href="http://www.embarcadero.com/products/firemonkey" target="_blank">FireMonkey</a>, aplicações mobile conectadas a servidores DataSnap, LiveBinding, Mac, iOS, Android, mini-cursos sobre componentes ACBr, integração continua, otimização de aplicações web para mobile e muito mais.</p>
<p>Enquanto isso eu (Andreano Lanusse) e David I preparamos um vídeo onde comentamos sobre o evento:</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><iframe src="http://www.youtube.com/embed/btH0y0Ho5Is" frameborder="0" width="480" height="360"></iframe></p>
<p>&nbsp;</p>
<p><iframe src="http://www.youtube.com/embed/RfjhS2OQQFE" frameborder="0" width="480" height="360"></iframe></p>
<p>Até o dia 30.</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/bye-bye-embarcadero/" title="Bye Bye Embarcadero">Bye Bye Embarcadero</a></li><li><a href="http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/" title="Video: Aprenda como utilizar DataSnap Connectors na prática">Video: Aprenda como utilizar DataSnap Connectors na prática</a></li><li><a href="http://www.andreanolanusse.com/pt/video-desenvolvendo-para-ios-com-firemonkey-e-delphi-xe2/" title="Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2">Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/video-desenvolvimento-para-ios-com-firemonkey/" title="Vídeo: Desenvolvimento para iOS com FireMonkey">Vídeo: Desenvolvimento para iOS com FireMonkey</a></li><li><a href="http://www.andreanolanusse.com/pt/tdbxjsontools-copiarconverter-dados-entre-tdataset-tjsonobject-dbxreader/" title="TDBXJsonTools copiar/converter dados entre TDataSet &#8211; TJSONObject &#8211; DBXReader">TDBXJsonTools copiar/converter dados entre TDataSet &#8211; TJSONObject &#8211; DBXReader</a></li><li><a href="http://www.andreanolanusse.com/pt/disponibilizado-o-update-4-para-delphi-xe2-e-cbuilder-xe2/" title="Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2">Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/vagas-esgotadas-para-o-delphi-conference-2011/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Disponibilizado Update 2 para Delphi XE2, C++Builder XE2 e RadPHP XE2</title>
		<link>http://www.andreanolanusse.com/pt/disponibilizado-update-2-para-delphi-xe2-cbuilder-xe2-e-radphp-xe2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=disponibilizado-update-2-para-delphi-xe2-cbuilder-xe2-e-radphp-xe2</link>
		<comments>http://www.andreanolanusse.com/pt/disponibilizado-update-2-para-delphi-xe2-cbuilder-xe2-e-radphp-xe2/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 23:20:05 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[RadPHP]]></category>
		<category><![CDATA[Hotfix]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1401</guid>
		<description><![CDATA[<p>O Update 2 para as versões XE2 do Delphi, C++Builder e RadPHP já estão disponíveis para download nos links abaixo. Você pode efetuar o download do Update 2 para Delphi e C++Builder através da opção &#8220;Check for Updates&#8221;. RAD Studio XE2 Update 2 Update 2 para Delphi, C++Builder e RAD Studio XE2 &#8211; http://cc.embarcadero.com/item/28597 ISO [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>O Update 2 para as versões XE2 do Delphi, C++Builder e RadPHP já estão disponíveis para download nos links abaixo.</p>
<p>Você pode efetuar o download do Update 2 para Delphi e C++Builder através da opção &#8220;Check for Updates&#8221;.</p>
<div class="avia-box alert large  rounded "><span class="avia-innerbox" >Se o IDE do Delphi XE2 ou C++Builder XE2 estiver instalado em Windows XP, você terá de efetuar o download do update diretamente da página de usuários registrados.</span></div>
<p><strong>RAD Studio XE2 Update 2</strong></p>
<ul>
<li>Update 2 para Delphi, C++Builder e RAD Studio XE2 &#8211; <a href="http://cc.embarcadero.com/item/28597" target="_blank">http://cc.embarcadero.com/item/28597</a></li>
<li>ISO do Delphi XE2 e C++Builder XE2 (inclui Update 2) &#8211; <a href="http://cc.embarcadero.com/item/28616" target="_blank">http://cc.embarcadero.com/item/28616</a></li>
<li>Lista de bugs resolvidos no Delphi XE2 e C++Builder XE2 Update &#8211; <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> &#8211; <a href="http://cc.embarcadero.com/item/28613" target="_blank">http://cc.embarcadero.com/item/28613</a></p>
<p><strong>RadPHP XE2 Update 2</strong></p>
<p>Update 2 para o RadPHP &#8211; <a href="http://cc.embarcadero.com/item/28614" target="_blank">http://cc.embarcadero.com/item/28614</a><br />
Lista de bugs resolvidos no RadPHP XE2 Update 2 &#8211; <a href="http://edn.embarcadero.com/article/41756" target="_blank">http://edn.embarcadero.com/article/41756</a></p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/bye-bye-embarcadero/" title="Bye Bye Embarcadero">Bye Bye Embarcadero</a></li><li><a href="http://www.andreanolanusse.com/pt/disponibilizado-o-update-4-para-delphi-xe2-e-cbuilder-xe2/" title="Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2">Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/disponibilizado-o-trial-datasheet-matriz-de-recursos-e-faq-para-as-versoes-xe2/" title="Disponibilizado o Trial, Datasheet, Matriz de Recursos e FAQ para as versões XE2">Disponibilizado o Trial, Datasheet, Matriz de Recursos e FAQ para as versões XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/delphi-conference-2011-chamada-para-submissao-de-palestras/" title="Delphi Conference 2011 &#8211; chamada para submissão de palestras">Delphi Conference 2011 &#8211; chamada para submissão de palestras</a></li><li><a href="http://www.andreanolanusse.com/pt/delphi-tour-2011/" title="Delphi Tour 2011">Delphi Tour 2011</a></li><li><a href="http://www.andreanolanusse.com/pt/rad-studio-xe2-uma-nova-era-para-desenvolvedores-delphi-e-cbuilder/" title="RAD Studio XE2 uma nova era para desenvolvedores Delphi e C++Builder">RAD Studio XE2 uma nova era para desenvolvedores Delphi e C++Builder</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/disponibilizado-update-2-para-delphi-xe2-cbuilder-xe2-e-radphp-xe2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CloudAPI – Envio de arquivos para Amazon S3 e Windows Azure – Parte 2</title>
		<link>http://www.andreanolanusse.com/pt/cloudapi-envio-de-arquivos-para-amazon-s3-e-windows-azure-parte-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cloudapi-envio-de-arquivos-para-amazon-s3-e-windows-azure-parte-2</link>
		<comments>http://www.andreanolanusse.com/pt/cloudapi-envio-de-arquivos-para-amazon-s3-e-windows-azure-parte-2/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 21:31:27 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Cloud]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1398</guid>
		<description><![CDATA[<p>Nesta segunda e última parte do artigo sobre envio de arquivos para as nuvens vamos detalhar como funciona o envio de arquivos para o para Amazon S3. Você pode ler os artigos que antecedem estas sequência nos links abaixo, é importante ler estes artigos para melhor entendimento deste artigo: Shell Extension para Windows 32-bt and [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Nesta segunda e última parte do artigo sobre envio de arquivos para as nuvens vamos detalhar como funciona o envio de arquivos para o para Amazon S3.</p>
<p>Você pode ler os artigos que antecedem estas sequência nos links abaixo, é importante ler estes artigos para melhor entendimento deste artigo:</p>
<ul>
<li><a title="Shell Extension para Windows 32-bit e 64-bit com Delphi XE2" href="http://www.andreanolanusse.com/pt/shell-extension-para-windows-32-bit-e-64-bit-com-delphi-xe2/" target="_blank">Shell Extension para Windows 32-bt and 64-bit com Delphi XE2</a></li>
<li><a title="CloudAPI – Envio de arquivos para Amazon S3 e Windows Azure – Parte 1" href="http://www.andreanolanusse.com/pt/cloudapi-envio-de-arquivos-para-amazon-s3-e-windows-azure-parte-1/" target="_blank">CloudAPI – Envio de arquivos para Amazon S3 e Windows Azure – Parte 1</a></li>
</ul>
<p>Na primeira parte do artigo descrevo como obter sua conta no Amazon e os significados do Bucket e Blog, considerando que você leu os artigos anteriores nos resta saber como funciona o CloudAPI para envio de arquivos para o Amazon S3, que é bem parecido ao do Windows Azure.</p>
<h3>Envio de arquivos para Amazon S3</h3>
<p>A implementação do Shell Extension utiliza o método UploadtoAmazon (CloudDM.pas) para o envio de arquivos para o Amazon S3, antes de enviar o arquivo temos definir em qual pasta (Bucket) será armazenado este arquivo.</p>
<p>Como o bucket pode não existir, ou o usuário pode querer criar um novo, implementei um formulário que permite o usuário selecionar um bucket já existente ou criar um novo.</p>
<p>Abaixo parte do código responsável pelo envio do arquivo, as linhas em destaque refletem o código que irá listar e criar ou selecionar o bucket.</p>
<p>Ao fazer uma solicitação ao Amazon S3 através do CloudAPI a maioria dos métodos retorna um objeto do tipo TCloudResponseInfo, este objeto contém o status do retorno referente a sua solicitação, todas estas solicitações são chamadas REST.</p>
<p>Para obter a lista de buckets utilizamos o método ListBuckets que é parte do objeto StorageService instanciando anteriormente, todos os serviços relacionados a Storage fazem parte desta classe, assim como a criação do bucket através do método CreateBucket.</p>
<p>Amazon e Windows Azure diferem no que diz respeito ao suporte a metadata na criação do container/bucket, Amazon não suporta metadata enquanto Windows Azure sim.</p>
<pre class="brush: delphi">function TCloud.UploadtoAmazon(FileName: String): TCloudResponseInfo;
var
  StorageService: TAmazonStorageService;
  BucketList, Metadata: TStrings;
  Content: TBytes;
  ResponseList: TCloudResponseInfo;
  FrmList: TFrmContainerList;
  Act: TContainerAction;
  BucketName: String;
  I: Integer;
begin
  Result := TCloudResponseInfo.Create;

  if (FileName = EmptyStr) then
    Exit;

  StorageService := TAmazonStorageService.Create(AmazonConnection);

{$REGION 'Define the Bucket'}
  ResponseList := TCloudResponseInfo.Create;
  BucketList := StorageService.ListBuckets(ResponseList);

  if ResponseList.StatusCode = 200 then
  begin

    // Amazon return date/time information for each Bucket
    // this for is required to remove that information
    for I := 0 to BucketList.Count - 1 do
      BucketList[I] := BucketList.Names[I];

    FrmList := TFrmContainerList.Create(nil, BucketList, TClouds[AmazonIndex]);
    try
      FrmList.ShowModal;
      Act := FrmList.Action;

      case Act of
        caCreate:
          begin
            if StorageService.CreateBucket(FrmList.Container, amzbaNotSpecified,
              amzrNotSpecified, Result) then
              BucketName := FrmList.Container;
          end;
        caUpload:
          begin
            BucketName := FrmList.Container;
          end;
      end;
    finally
      FrmList.Free;
    end;

    if Act = TContainerAction.caNone then
      Exit;

  end;</pre>
<p>&nbsp;</p>
<p>Com o bucket definido podemos adiante e preparar o envio do arquivo.</p>
<p>Para o envio do arquivo utilizamos o método StorageService.UploadObject que contém diversos parâmetros como: nome e o conteúdo do arquivo em TBytes, metadata e alguns outros que não são necessários para este exemplo. Você deve utilizar alguma função para fazer o encode do nome do arquivo, por exemplo  TIdURI.URLEncode(str).</p>
<p>Podemos adicionar metadata ao arquivo, neste exemplo adiciono o nome do computador\usuário e a localização original do arquivo a ser enviado.</p>
<pre class="brush: delphi">    Metadata.Clear;
    Metadata.Values[SMDPath] := ExtractFilePath(FileName);
    Metadata.Values[SMDFrom] := GetComputerandUserName;

    Content := ContentOf(FileName);
    BlobName := ExtractFileName(FileName);</pre>
<p>O método ContentOf retorna o conteúdo do arquivo em TBytes.</p>
<pre class="brush: delphi">function TCloud.ContentOf(const FileName: String;
  RequiredSizeMod: Integer): TBytes;
var
  fs: TFileStream;
begin
  if FileName &lt;&gt; EmptyStr then
  begin
    fs := TFileStream.Create(FileName, fmOpenRead);
    try
      if RequiredSizeMod &lt; 1 then
        SetLength(Result, fs.Size)
      else
        SetLength(Result, ((fs.Size div RequiredSizeMod) + 1) *
          RequiredSizeMod);
      fs.ReadBuffer(Result[0], fs.Size);
    finally
      fs.Free;
    end;
  end
  else
    SetLength(Result, 0);

end;</pre>
<p>O resultado do envio será um parâmetro de saída do tipo TCloudResponseInfo, este contém a propriedade StatusCode, requisições realizadas com sucesso retornam o código 200 ou 201.</p>
<pre class="brush: delphi">    StorageService.UploadObject(BucketName, ExtractFileName(FileName), Content, False, Metadata, nil, amzbaPublicRead, Result);
    ShowResponseInfo(TClouds[AmazonIndex], Result);</pre>
<p>Clique <a href="http://radstudiodemos.svn.sourceforge.net/viewvc/radstudiodemos/branches/RadStudio_XE2/Delphi/CloudAPI/CloudUpload/CloudDM.pas?revision=321&amp;view=markup" target="_blank">aqui</a> para visualizar o código fonte da unit CloudDM.pas.</p>
<p>O código fonte completo está disponível no repositório do RAD Studio XE2 no sourceforge e as informações para efetuar o download dos fontes completo estão disponíveis <a href="http://www.andreanolanusse.com/pt/shell-extension-para-windows-32-bit-e-64-bit-com-delphi-xe2/">aqui</a>.<br />
Nesta sequência de artigos você pode aprender a criar Shell Extensions, compilar pra 32-bit e 64 bit e utilizar o CloudAPI, vale lembrar que o ClouAPI traz muitas outras API&#8217;s para interagir com as nuvens</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/cloudapi-envio-de-arquivos-para-amazon-s3-e-windows-azure-parte-1/" title="CloudAPI &#8211; Envio de arquivos para Amazon S3 e Windows Azure &#8211; Parte 1">CloudAPI &#8211; Envio de arquivos para Amazon S3 e Windows Azure &#8211; Parte 1</a></li><li><a href="http://www.andreanolanusse.com/pt/shell-extension-para-windows-32-bit-e-64-bit-com-delphi-xe2/" title="Shell Extension para Windows 32-bit e 64-bit com Delphi XE2">Shell Extension para Windows 32-bit e 64-bit com Delphi XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/microsoft-windows-azure-por-30-dias-gratis/" title="Microsoft Windows Azure por 30 dias GRÁTIS">Microsoft Windows Azure por 30 dias GRÁTIS</a></li><li><a href="http://www.andreanolanusse.com/pt/apresentacoes-do-delphi-conference-2010-disponivel-para-download/" title="Apresentações do Delphi Conference 2010 disponível para download">Apresentações do Delphi Conference 2010 disponível para download</a></li><li><a href="http://www.andreanolanusse.com/pt/teste-nosso-servidor-datasnap-xe-instalado-no-amazon-cloud/" title="Teste nosso servidor DataSnap XE instalado no Amazon Cloud">Teste nosso servidor DataSnap XE instalado no Amazon Cloud</a></li><li><a href="http://www.andreanolanusse.com/pt/datasnap-xe-e-windows-azure-preview-3/" title="DataSnap XE e Windows Azure – RAD Studio XE Preview #3">DataSnap XE e Windows Azure – RAD Studio XE Preview #3</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/cloudapi-envio-de-arquivos-para-amazon-s3-e-windows-azure-parte-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CloudAPI &#8211; Envio de arquivos para Amazon S3 e Windows Azure &#8211; Parte 1</title>
		<link>http://www.andreanolanusse.com/pt/cloudapi-envio-de-arquivos-para-amazon-s3-e-windows-azure-parte-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cloudapi-envio-de-arquivos-para-amazon-s3-e-windows-azure-parte-1</link>
		<comments>http://www.andreanolanusse.com/pt/cloudapi-envio-de-arquivos-para-amazon-s3-e-windows-azure-parte-1/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 01:40:13 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Cloud]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1391</guid>
		<description><![CDATA[<p>No meu recente artigo Shell Extension para Windows 32-bit e Windows 64-bit com Delphi XE expliquei passo a passo como criar extensões para o Windows Explorer, possibilitando o envio de arquivo para Amazon S3 e Windows Azure, neste artigo vamos ver como utilizar o Cloud API para enviar os arquivos para Amazon S3 e Windows Azure [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>No meu recente artigo <a title="Shell Extension para Windows 32-bit e 64-bit com Delphi XE2" href="http://www.andreanolanusse.com/pt/shell-extension-para-windows-32-bit-e-64-bit-com-delphi-xe2/">Shell Extension para Windows 32-bit e Windows 64-bit com Delphi XE</a> expliquei passo a passo como criar extensões para o Windows Explorer, possibilitando o envio de arquivo para Amazon S3 e Windows Azure, neste artigo vamos ver como utilizar o Cloud API para enviar os arquivos para Amazon S3 e Windows Azure Cloud com Delphi XE2, caso você não tenha lido o artigo <a title="Shell Extension para Windows 32-bit e 64-bit com Delphi XE2" href="http://www.andreanolanusse.com/pt/shell-extension-para-windows-32-bit-e-64-bit-com-delphi-xe2/">anterior</a>, recomendo ler para melhor compreensão deste artigo.</p>
<p>O Cloud API é um conjunto de API&#8217;s que permite a interação com os serviços de tabela, armazenamento e mensagens do Amazon S3 e Windows Azure, está disponível para <a href="http://www.embarcadero.com/products/delphi" target="_blank">Delphi</a> e <a href="http://www.embarcadero.com/products/cbuilder" target="_blank">C++Builder</a>.</p>
<p>Utilizando o exemplo do artigo anterior como ponto inicial, foi implementado no mesmo um DataModule (CloudDM.pas) que contém a configuração para acesso as nuvens através dos componentes AmazonConnection e AzureConnection, além disso os métodos responsáveis pelo envio de arquivos para as nuvens, assim sendo você precisa ter uma conta no Amazon e no Azure para utilizar este exemplo, a baixo um resumo breve para obter sua conta a qual não é gratuita, o custo é bem baixo e baseado no quanto você utiliza.</p>
<h3>Criando uma conta Windows Azure Storage</h3>
<p>Através do link <a href="http://windows.azure.com" target="_blank">http://windows.azure.com</a> você pode criar sua conta Azure Storage seguindo os passos fornecidos na página, abaixo um screenshot da minha conta e onde estão localizados os dois parâmetros (AccountName e AccountKey) requeridos pelo componente AzureConnection.</p>
<p style="text-align: center;"><a href="http://www.andreanolanusse.com/pt/wp-content/uploads/2011/10/AzureAccount.png"><img class="aligncenter size-full wp-image-1392" title="Windows Azure Account" src="http://www.andreanolanusse.com/pt/wp-content/uploads/2011/10/AzureAccount.png" alt="" width="664" height="316" /></a></p>
<p>&nbsp;</p>
<h3>Criando uma conta Amazon  (AWS)</h3>
<p>Criar uma conta no Amazon também é bem simples, acesse o site <a href="https://console.aws.amazon.com/s3/home " target="_blank">https://console.aws.amazon.com/s3/home </a>e siga os passos, para obter o AccountKey e AccountName a ser utilizado no componente AmazonConnection, acesse <a href="https://aws-portal.amazon.com/gp/aws/developer/account/index.html?action=access-key" target="_blank">https://aws-portal.amazon.com/gp/aws/developer/account/index.html?action=access-key</a>, abaixo um screenshot.</p>
<p style="text-align: center;"><a href="http://www.andreanolanusse.com/pt/wp-content/uploads/2011/10/AmazonAccount.png"><img class="aligncenter size-full wp-image-1393" title="Amazon Account" src="http://www.andreanolanusse.com/pt/wp-content/uploads/2011/10/AmazonAccount.png" alt="" width="683" height="413" /></a></p>
<p>&nbsp;</p>
<h3>Arquivo INI para configuração da DLL</h3>
<p>As configurações de acesso as respectivas nuvens estão sendo armazenadas no arquivo ini CloudUpload-Extension.ini localizado no diretório Home de cada usuário, eu não vou detalhar como utilizar arquivos ini aqui, você pode estudar esta parte após baixar os código fonte do exemplo aqui utilizado.</p>
<p>&nbsp;</p>
<h3>Bucket vs Container e Object vs Blob</h3>
<p>Todo arquivo enviado para as nuvens será armazenado em uma pasta, Amazon chama pasta de Bucket e Windows Azure de Container, no final das contas Bucket e Container são pastas, cada nuvem tem suas regras e limitações de como nomear as pastas, por exemplo o nome de uma pastas no Amazon deve ser único em toda a nuvem, isso mesmo não único na sua conta, ou seja, criar um diretório imagens esquece, alguém certamente já criou um.</p>
<p>A diferença de nomenclatura também ocorre para arquivos, que na Amazon é chamado do Object e no Windows Azure chama-se Blog.</p>
<p>Cloud API respeita essas diferenças, assim para criar um Bucket no Amazon usamos o método CreateBucket, para criar um Container no Windows Azure utilizamos o método CreateContainer.</p>
<p>&nbsp;</p>
<h3>Envio de arquivos para Windows Azure</h3>
<p>A implementação do Shell Extension utiliza o método UploadtoAzure (CloudDM.pas) para o envio de arquivos para o Windows Azure, antes de enviar o arquivo temos definir em qual pasta (Container) será armazenado este arquivo.</p>
<p>Como o container pode não existir, ou o usuário pode querer criar um novo, implementei um formulário que permite o usuário selecionar um container já existente ou criar uma nova.</p>
<p>Abaixo parte do código responsável pelo envio do arquivo, as linhas em destaque refletem o código que irá listar e criar ou selecionar o container.</p>
<p>Ao fazer uma solicitação ao Windows Azure através do CloudAPI a maioria dos métodos retorna um objeto do tipo TCloudResponseInfo, este objeto contém o status do retorno referente a sua solicitação, todas estas solicitações são chamadas REST.</p>
<p>Para obter a lista de containers utilizando o método ListContainers que é parte do objeto BlobService instanciando anteriormente, todos os serviços relacionados a Blob fazem parte desta classe, assim como a criação do container através do método Create Container.</p>
<p>No caso da criação do container, podemos passar informações adicionais a qual chamamos de metadata, no exemplo abaixo passamos o nome do computador utilizado para solicitar a criação deste container, esta informação estará disponível como parte do metadata deste container, você pode definir várias outras informações e adiciona-las como parte do seu metadata que é do tipo TStringList;</p>
<pre class="brush: delphi">function TCloud.UploadtoAzure(FileName: String): TCloudResponseInfo;
var
  BlobService: TAzureBlobService;
  SList, Metadata: TStrings;
  ContainerList: TList;
  ContainerObj: TAzureContainer;
  Content: TBytes;
  BlobName, ContainerName: String;
  ResponseList: TCloudResponseInfo;
  FrmList: TFrmContainerList;
  Act: TContainerAction;
begin

  Result := TCloudResponseInfo.Create;

  if (FileName = EmptyStr) then
    Exit;

  BlobService := TAzureBlobService.Create(AzureConnection);
  try
    ResponseList := TCloudResponseInfo.Create;
    ContainerList := BlobService.ListContainers(nil, ResponseList);
    Metadata := TStringList.Create;

    if ResponseList.StatusCode = 200 then
    begin

      SList := TStringList.Create;
      for ContainerObj in ContainerList do
        SList.Add(ContainerObj.Name);
      ContainerList.Free;

      FrmList := TFrmContainerList.Create(nil, SList, TClouds[AzureIndex]);
      try
        FrmList.ShowModal;
        Act := FrmList.Action;

        case Act of
          caCreate:
            begin
              Metadata.Values[SMDCreateby] := GetComputerandUserName;

              if BlobService.CreateContainer(FrmList.Container, Metadata,
                bpaBlob, Result) then
                ContainerName := FrmList.Container;
            end;
          caUpload:
            begin
              ContainerName := FrmList.Container;
            end;
        end;
      finally
        SList.Free;
        FrmList.Free;
      end;

      if Act = TContainerAction.caNone then
        Exit;

    end;</pre>
<p>&nbsp;</p>
<p>Com a definição do container podemos seguir para o próximo passo que é o envio do arquivo.</p>
<p>Para o envio do arquivo utilizamos o método BlobService.PutBlockBlob que contém diversos parâmetros como: nome e o conteúdo do arquivo em TBytes, metadata e alguns outros que não são necessários para este exemplo.</p>
<p>Assim como para containers podemos adicionar metadata ao arquivo, neste exemplo adiciono o nome do computador\usuário e a localização original do arquivo a ser enviado.</p>
<pre class="brush: delphi">    Metadata.Clear;
    Metadata.Values[SMDPath] := ExtractFilePath(FileName);
    Metadata.Values[SMDFrom] := GetComputerandUserName;

    Content := ContentOf(FileName);
    BlobName := ExtractFileName(FileName);</pre>
<p>O método ContentOf retorna o conteúdo do arquivo em TBytes.</p>
<pre class="brush: delphi">function TCloud.ContentOf(const FileName: String;
  RequiredSizeMod: Integer): TBytes;
var
  fs: TFileStream;
begin
  if FileName &lt;&gt; EmptyStr then
  begin
    fs := TFileStream.Create(FileName, fmOpenRead);
    try
      if RequiredSizeMod &lt; 1 then
        SetLength(Result, fs.Size)
      else
        SetLength(Result, ((fs.Size div RequiredSizeMod) + 1) *
          RequiredSizeMod);
      fs.ReadBuffer(Result[0], fs.Size);
    finally
      fs.Free;
    end;
  end
  else
    SetLength(Result, 0);

end;</pre>
<p>O resultado do envio será um parâmetro de saída do tipo TCloudResponseInfo, este contém a propriedade StatusCode, requisições realizadas com sucesso retornam o código 200 ou 201.</p>
<pre class="brush: delphi">    BlobService.PutBlockBlob(ContainerName, BlobName, Content, '', nil,
      Metadata, Result);
    ShowResponseInfo(TClouds[AzureIndex], Result);</pre>
<p>Abaixo a implementação completa da unit CloudDM.pas.</p>
<pre class="brush: delphi">unit CloudDM;

interface

uses
  System.SysUtils, System.Classes, Data.Cloud.AzureAPI, Data.Cloud.CloudAPI,
  Data.Cloud.AmazonAPI, Winapi.Windows, IniFiles, IOUtils,
  System.Generics.Collections;

type
  TCloud = class(TDataModule)
    AzureConnection: TAzureConnectionInfo;
    AmazonConnection: TAmazonConnectionInfo;
  private
    { Private declarations }
    FHandle: HWND;
    function GetComputerandUserName: String;
    function UploadtoAmazon(FileName: String): TCloudResponseInfo;
    function UploadtoAzure(FileName: String): TCloudResponseInfo;
    function ContentOf(const FileName: String;
      RequiredSizeMod: Integer = 0): TBytes;
    procedure ShowResponseInfo(Title: String; Response: TCloudResponseInfo);
  public
    { Public declarations }

    function LoadConfiguration: Boolean;
    function Upload(FileName: String; Cloud: Integer): TCloudResponseInfo;

    class procedure SaveLog(s: String);
    constructor Create(AOWner: TComponent; Handle: HWND); reintroduce; overload;
  end;

var
  Cloud: TCloud;

Const
  AmazonIndex = 0;
  AzureIndex = 1;
  TClouds: Array [0 .. 1] of PWideChar = ('Amazon S3', 'Microsoft Azure');

implementation

uses CloudContainerList;

Const
  SMyAzureKey = 'MyAzureKey'; // do not translate
  SMyAmazonKey = 'MyAmazonKey'; // do not translate
  SInternetConfig = 'Internet Access Configuration'; // do not translate

  SAccountName = 'AccountName'; // do not translate
  SAccountKey = 'AccountKey'; // do not translate
  SProxyHost = 'ProxyHost'; // do not translate
  SProxyPort = 'ProxyPort'; // do not translate

  SStorageEndpoint = 'StorageBlobEndpoint'; // do not translate

  SMDPath = 'originalfilepath';
  SMDFrom = 'uploadfrom';
  SMDCreateby = 'createdby';

{$R *.dfm}
  { TCloudContainer }

function TCloud.ContentOf(const FileName: String;
  RequiredSizeMod: Integer): TBytes;
var
  fs: TFileStream;
begin
  if FileName &lt;&gt; EmptyStr then
  begin
    fs := TFileStream.Create(FileName, fmOpenRead);
    try
      if RequiredSizeMod &lt; 1 then
        SetLength(Result, fs.Size)
      else
        SetLength(Result, ((fs.Size div RequiredSizeMod) + 1) *
          RequiredSizeMod);
      fs.ReadBuffer(Result[0], fs.Size);
    finally
      fs.Free;
    end;
  end
  else
    SetLength(Result, 0);

end;

constructor TCloud.Create(AOWner: TComponent; Handle: HWND);
begin
  inherited Create(AOWner);
  FHandle := Handle

end;

function TCloud.GetComputerandUserName: String;
var
  cName, uName: array [0 .. 255] of char;
  c: DWORD;
begin
  c := SizeOf(cName);

  GetComputerName(cName, c);
  GetUserName(uName, c);

  Result := StrPas(cName) + '\' + StrPas(uName);
end;

function TCloud.LoadConfiguration: Boolean;
var
  IniFile: string;
  Ini: TIniFile;
  Port: Integer;
  SUrl: String;
begin

  IniFile := GetHomePath + '\CloudUpload-Extension.ini';
  Ini := TIniFile.Create(IniFile);

  try
    // The ini file will be created in case it doesn't exist
    if not FileExists(IniFile) then
    begin
      // Azure parameters
      Ini.WriteString(SMyAzureKey, SAccountName, EmptyStr);
      Ini.WriteString(SMyAzureKey, SAccountKey, EmptyStr);
      Ini.WriteString(SMyAzureKey, SStorageEndpoint, EmptyStr);

      // Amazon parameters
      Ini.WriteString(SMyAmazonKey, SAccountName, EmptyStr);
      Ini.WriteString(SMyAmazonKey, SAccountKey, EmptyStr);
      Ini.WriteString(SMyAmazonKey, SStorageEndpoint, EmptyStr);

      // Internet access configuration
      Ini.WriteString(SInternetConfig, SProxyHost, EmptyStr);
      Ini.WriteString(SInternetConfig, SProxyPort, EmptyStr);

      Ini.UpdateFile;
      Result := False;
    end
    else
    begin

      TryStrToInt(Ini.ReadString(SInternetConfig, SProxyPort, '0'), Port);

      with AzureConnection do
      begin
        AccountName := Ini.ReadString(SMyAzureKey, SAccountName, EmptyStr);
        AccountKey := Ini.ReadString(SMyAzureKey, SAccountKey, EmptyStr);

        RequestProxyHost := Ini.ReadString(SInternetConfig, SProxyHost,
          EmptyStr);
        RequestProxyPort := Port;

        SUrl := Ini.ReadString(SMyAzureKey, SStorageEndpoint, EmptyStr);

        UseDefaultEndpoints := SUrl = EmptyStr;
        BlobEndpoint := SUrl;
      end;

      with AmazonConnection do
      begin
        AccountName := Ini.ReadString(SMyAmazonKey, SAccountName, EmptyStr);
        AccountKey := Ini.ReadString(SMyAmazonKey, SAccountKey, EmptyStr);

        RequestProxyHost := Ini.ReadString(SInternetConfig, SProxyHost,
          EmptyStr);
        RequestProxyPort := Port;

        SUrl := Ini.ReadString(SMyAmazonKey, SStorageEndpoint, EmptyStr);

        UseDefaultEndpoints := SUrl = EmptyStr;
        StorageEndpoint := SUrl;
      end;
      Result := True;
    end;

  finally
    Ini.Free;
  end;
end;

class procedure TCloud.SaveLog(s: String);
var
  LogFile: TextFile;
begin
  { open the log file }
  AssignFile(LogFile, 'c:\Shell.txt');
  if FileExists('c:\Shell.txt') then
    Append(LogFile)
  else
    Rewrite(LogFile);

  WriteLn(LogFile, s + #13#10);

  { write and close the logfile }
  CloseFile(LogFile);
end;

procedure TCloud.ShowResponseInfo(Title: String; Response: TCloudResponseInfo);
begin
  case Response.StatusCode of
    200, 201:
      MessageBox(FHandle, 'File Uploaded', PWideChar(Title), MB_OK);
  else
    MessageBox(FHandle, PWideChar('Error ' + Response.StatusMessage),
      PWideChar(Title), MB_ICONWARNING);
  end;
end;

function TCloud.Upload(FileName: String; Cloud: Integer): TCloudResponseInfo;
begin
  case Cloud of
    AmazonIndex:
      Result := UploadtoAmazon(FileName);
    AzureIndex:
      Result := UploadtoAzure(FileName);
  else
    Result := TCloudResponseInfo.Create;
  end;
end;

function TCloud.UploadtoAmazon(FileName: String): TCloudResponseInfo;
var
  StorageService: TAmazonStorageService;
  BucketList, Metadata: TStrings;
  Content: TBytes;
  ResponseList: TCloudResponseInfo;
  FrmList: TFrmContainerList;
  Act: TContainerAction;
  BucketName: String;
  I: Integer;
begin
  Result := TCloudResponseInfo.Create;

  if (FileName = EmptyStr) then
    Exit;

  StorageService := TAmazonStorageService.Create(AmazonConnection);

{$REGION 'Define the Bucket'}
  ResponseList := TCloudResponseInfo.Create;
  BucketList := StorageService.ListBuckets(ResponseList);

  if ResponseList.StatusCode = 200 then
  begin

    // Amazon return date/time information for each Bucket
    // this for is required to remove that information
    for I := 0 to BucketList.Count - 1 do
      BucketList[I] := BucketList.Names[I];

    FrmList := TFrmContainerList.Create(nil, BucketList, TClouds[AmazonIndex]);
    try
      FrmList.ShowModal;
      Act := FrmList.Action;

      case Act of
        caCreate:
          begin
            if StorageService.CreateBucket(FrmList.Container, amzbaNotSpecified,
              amzrNotSpecified, Result) then
              BucketName := FrmList.Container;
          end;
        caUpload:
          begin
            BucketName := FrmList.Container;
          end;
      end;
    finally
      FrmList.Free;
    end;

    if Act = TContainerAction.caNone then
      Exit;

  end;
{$ENDREGION}
  try

    Metadata := TStringList.Create;
    Metadata.Values[SMDPath] := ExtractFilePath(FileName);
    Metadata.Values[SMDFrom] := GetComputerandUserName;

    Content := ContentOf(FileName);

    FileName := StringReplace(FileName, ' ', '%20', [rfReplaceAll, rfIgnoreCase]);

    StorageService.UploadObject(BucketName, ExtractFileName(FileName), Content,
      False, Metadata, nil, amzbaPublicRead, Result);
    ShowResponseInfo(TClouds[AmazonIndex], Result);

  except
    on E: Exception do
    begin
      MessageBox(FHandle, PWideChar('Error ' + E.Message),
        TClouds[AmazonIndex], MB_OK);
    end;
  end;

  FreeAndNil(Metadata);
  FreeAndNil(StorageService);
end;

function TCloud.UploadtoAzure(FileName: String): TCloudResponseInfo;
var
  BlobService: TAzureBlobService;
  SList, Metadata: TStrings;
  ContainerList: TList;
  ContainerObj: TAzureContainer;
  Content: TBytes;
  BlobName, ContainerName: String;
  ResponseList: TCloudResponseInfo;
  FrmList: TFrmContainerList;
  Act: TContainerAction;
begin

  Result := TCloudResponseInfo.Create;

  if (FileName = EmptyStr) then
    Exit;

  BlobService := TAzureBlobService.Create(AzureConnection);
  try

{$REGION 'Define the container'}
    ResponseList := TCloudResponseInfo.Create;
    ContainerList := BlobService.ListContainers(nil, ResponseList);
    Metadata := TStringList.Create;

    if ResponseList.StatusCode = 200 then
    begin

      SList := TStringList.Create;
      for ContainerObj in ContainerList do
        SList.Add(ContainerObj.Name);
      ContainerList.Free;

      FrmList := TFrmContainerList.Create(nil, SList, TClouds[AzureIndex]);
      try
        FrmList.ShowModal;
        Act := FrmList.Action;

        case Act of
          caCreate:
            begin
              Metadata.Values[SMDCreateby] := GetComputerandUserName;

              if BlobService.CreateContainer(FrmList.Container, Metadata,
                bpaBlob, Result) then
                ContainerName := FrmList.Container;
            end;
          caUpload:
            begin
              ContainerName := FrmList.Container;
            end;
        end;
      finally
        SList.Free;
        FrmList.Free;
      end;

      if Act = TContainerAction.caNone then
        Exit;

    end;
{$ENDREGION}

    Metadata.Clear;
    Metadata.Values[SMDPath] := ExtractFilePath(FileName);
    Metadata.Values[SMDFrom] := GetComputerandUserName;

    Content := ContentOf(FileName);
    BlobName := ExtractFileName(FileName);

    BlobService.PutBlockBlob(ContainerName, BlobName, Content, '', nil,
      Metadata, Result);
    ShowResponseInfo(TClouds[AzureIndex], Result);

  except
    on E: Exception do
    begin
      MessageBox(FHandle, PWideChar('Error ' + E.Message),
        TClouds[AzureIndex], MB_OK);
    end;
  end;

  FreeAndNil(ResponseList);
  FreeAndNil(Metadata);
  FreeAndNil(BlobService);

end;

end.</pre>
<p>O código fonte completo está disponível no repositório do RAD Studio XE2 no sourceforge, no <a href="http://www.andreanolanusse.com/pt/shell-extension-para-windows-32-bit-e-64-bit-com-delphi-xe2/">artigo anterior</a> você pode obter as informações de como obter os fontes.<br />
Até o próximo artigo que irá abordar o envio de arquivos para Amazon S3.</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/cloudapi-envio-de-arquivos-para-amazon-s3-e-windows-azure-parte-2/" title="CloudAPI – Envio de arquivos para Amazon S3 e Windows Azure – Parte 2">CloudAPI – Envio de arquivos para Amazon S3 e Windows Azure – Parte 2</a></li><li><a href="http://www.andreanolanusse.com/pt/shell-extension-para-windows-32-bit-e-64-bit-com-delphi-xe2/" title="Shell Extension para Windows 32-bit e 64-bit com Delphi XE2">Shell Extension para Windows 32-bit e 64-bit com Delphi XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/microsoft-windows-azure-por-30-dias-gratis/" title="Microsoft Windows Azure por 30 dias GRÁTIS">Microsoft Windows Azure por 30 dias GRÁTIS</a></li><li><a href="http://www.andreanolanusse.com/pt/apresentacoes-do-delphi-conference-2010-disponivel-para-download/" title="Apresentações do Delphi Conference 2010 disponível para download">Apresentações do Delphi Conference 2010 disponível para download</a></li><li><a href="http://www.andreanolanusse.com/pt/teste-nosso-servidor-datasnap-xe-instalado-no-amazon-cloud/" title="Teste nosso servidor DataSnap XE instalado no Amazon Cloud">Teste nosso servidor DataSnap XE instalado no Amazon Cloud</a></li><li><a href="http://www.andreanolanusse.com/pt/datasnap-xe-e-windows-azure-preview-3/" title="DataSnap XE e Windows Azure – RAD Studio XE Preview #3">DataSnap XE e Windows Azure – RAD Studio XE Preview #3</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/cloudapi-envio-de-arquivos-para-amazon-s3-e-windows-azure-parte-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Publicando providers durante o registro dinâmico de DataSnap Server Class</title>
		<link>http://www.andreanolanusse.com/pt/publicando-providers-durante-o-registro-dinamico-de-datasnap-server-class/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=publicando-providers-durante-o-registro-dinamico-de-datasnap-server-class</link>
		<comments>http://www.andreanolanusse.com/pt/publicando-providers-durante-o-registro-dinamico-de-datasnap-server-class/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 23:37:14 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[DataSnap]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=1384</guid>
		<description><![CDATA[<p>Já faz algum tempo que publiquei aqui no blog sobre registro de DataSnap Server Class em tempo de execução, neste mesmo post surgiu vários comentários relacionados a não publicação dos Provider parte do ServerModule, o código original ao registrar o DSServerClass publicava apenas métodos (Server methods), mas não os Providers. A solução para este problema [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Já faz algum tempo que publiquei aqui no blog sobre registro de <a href="http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/">DataSnap Server Class em tempo de execução</a>, neste mesmo post surgiu vários comentários relacionados a não publicação dos Provider parte do ServerModule, o código original ao registrar o DSServerClass publicava apenas métodos (Server methods), mas não os Providers.</p>
<p>A solução para este problema é bem simples, basta registrar a classe TDSProviderDataModuleAdapter, a qual é usada internamente para permitir que o Provider esteja visível para os clientes DataSnap. TDSProviderDataModuleAdapter atua como um proxy entre TProviderDataModule no lado servidor e o TDSProviderConnection no lado cliente.</p>
<p>Poderíamos apenas mudar a implementação do método GetDSClass conforme abaixo, isso funcionaria, mas não seria a melhor implementação visto que estariamos sempre publicando os métodos da interface IAppServer utilizados pelo Provider e ClientDataSet, não faz sentido publicar esta interface se não há provider no ServerModule.</p>
<p>Tornar a publicação parametrizável traz maior flexbilidade e controle para a aplicação e para o desenvoldedor, fica a seu critério quando publicar ou não os providers, assim sendo precisamos apenas de um novo parâmetro na classe TSimpleServerClass.</p>
<pre class="brush: delphi">function TSimpleServerClass.GetDSClass: TDSClass;
begin
  Result := TDSClass.Create(FPersistentClass, False);
  Result := TDSClass.Create(TDSProviderDataModuleAdapter, Result)
end;</pre>
<p>Abaixo temos o código atualizado, a única alteração foi no constructor que recebeu o novo parâmetro ExposeProvider, desta forma você decide se quer ou não publicar os providers.</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>Abaixo um exemplo onde são registradas 3 classes e somente uma delas expõe os Providers:</p>
<pre class="brush: delphi">procedure RegisterServerClasses(AOwner: TComponent; AServer: TDSServer);
begin
  Assert(AServer.Started = false, 'Não é possível adicionar classes com o servidor ativo');

  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">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/" title="Video: Aprenda como utilizar DataSnap Connectors na prática">Video: Aprenda como utilizar DataSnap Connectors na prática</a></li><li><a href="http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/" title="CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;">CopyReaderToClientDataSet, Blob e a mensagem &#8220;Feature not implemented&#8221;</a></li><li><a href="http://www.andreanolanusse.com/pt/monitoramento-e-controle-de-conexoes-em-datasnap-xe2/" title="Monitoramento e controle de conexões em DataSnap XE2">Monitoramento e controle de conexões em DataSnap XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/implementando-cache-de-dados-em-servidores-datasnap/" title="Implementando cache de dados em servidores DataSnap">Implementando cache de dados em servidores DataSnap</a></li><li><a href="http://www.andreanolanusse.com/pt/exemplos-e-slides-do-delphi-meeting-2011/" title="Exemplos e slides do Delphi Meeting 2011">Exemplos e slides do Delphi Meeting 2011</a></li><li><a href="http://www.andreanolanusse.com/pt/video-threads-e-datasnap-otimizando-um-servidor-de-aplicacao-delphi-conference-2010-brasil/" title="Vídeo: Threads e DataSnap – otimizando um servidor de aplicação – Delphi Conference 2010 Brasil">Vídeo: Threads e DataSnap – otimizando um servidor de aplicação – Delphi Conference 2010 Brasil</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/publicando-providers-durante-o-registro-dinamico-de-datasnap-server-class/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>

