<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2portuguesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>programmer ObjectPascal</title><link>http://blog.silvioprog.com.br/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/silvioprog" /><description>Bem-vindo ao site do desenvolvedor livre!</description><language>en</language><managingEditor>gsilvioprog@gmail.com (programmer ObjectPascal)</managingEditor><lastBuildDate>Sun, 27 Mar 2011 20:08:51 PDT</lastBuildDate><generator>Blogger</generator><atom:id xmlns:atom="http://www.w3.org/2005/Atom">tag:blogger.com,1999:blog-3891673720975914690</atom:id><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">62</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/silvioprog" /><feedburner:info uri="silvioprog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-sa/3.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /><meta xmlns="http://pipes.yahoo.com" name="pipes" content="noprocess" /><feedburner:emailServiceId>silvioprog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsilvioprog" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsilvioprog" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsilvioprog" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/silvioprog" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsilvioprog" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fsilvioprog" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsilvioprog" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsilvioprog" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Fsilvioprog" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Fsilvioprog" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsalloy.com/?rss=http%3A%2F%2Ffeeds.feedburner.com%2Fsilvioprog" src="http://www.newsalloy.com/subrss3.gif">Subscribe with NewsAlloy</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fsilvioprog" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fsilvioprog" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fsilvioprog" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsilvioprog" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsilvioprog" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fsilvioprog" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsilvioprog" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2Fsilvioprog" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><feedburner:browserFriendly>Escolha suas opções de subscrição.</feedburner:browserFriendly><item><title>Instalando FPC 2.5.1 pelo SVN no Ubuntu</title><link>http://feedproxy.google.com/~r/silvioprog/~3/_tYCaXDsu14/instalando-fpc-251-pelo-svn-no-ubuntu.html</link><category>FPC</category><category>Lazarus</category><category>Ubuntu</category><category>SVN</category><author>noreply@blogger.com (Rafael Elias)</author><pubDate>Thu, 24 Mar 2011 12:13:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-5433227263155221762</guid><description>Olá pessoal,&lt;br /&gt;&lt;br /&gt;Sou &lt;b&gt;Rafael Elias&lt;/b&gt;, e através deste tutorial, vou mostrar como instalar o FPC 2.5.1 pelo SVN no Linux Ubuntu.&lt;br /&gt;&lt;br /&gt;Boa leitura.&lt;iframe src="https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=false&amp;amp;embedded=true&amp;amp;srcid=0B9LIcsKuN64hODViZDJjOWUtNTBkMy00MmE2LWFlZDctYjQ5YmE4ZDlhYTUx&amp;amp;hl=pt_BR" width="100%" frameborder="0" height="560px"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-5433227263155221762?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tFxUKRHtEPcvuKq_ZfnLbPGHfcY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tFxUKRHtEPcvuKq_ZfnLbPGHfcY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tFxUKRHtEPcvuKq_ZfnLbPGHfcY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tFxUKRHtEPcvuKq_ZfnLbPGHfcY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=_tYCaXDsu14:YONtkZIolb0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=_tYCaXDsu14:YONtkZIolb0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=_tYCaXDsu14:YONtkZIolb0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=_tYCaXDsu14:YONtkZIolb0:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=_tYCaXDsu14:YONtkZIolb0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=_tYCaXDsu14:YONtkZIolb0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=_tYCaXDsu14:YONtkZIolb0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=_tYCaXDsu14:YONtkZIolb0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=_tYCaXDsu14:YONtkZIolb0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=_tYCaXDsu14:YONtkZIolb0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=_tYCaXDsu14:YONtkZIolb0:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=_tYCaXDsu14:YONtkZIolb0:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=_tYCaXDsu14:YONtkZIolb0:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=_tYCaXDsu14:YONtkZIolb0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=_tYCaXDsu14:YONtkZIolb0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=_tYCaXDsu14:YONtkZIolb0:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/_tYCaXDsu14" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-03-24T16:26:14.419-03:00</atom:updated><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2011/03/instalando-fpc-251-pelo-svn-no-ubuntu.html</feedburner:origLink></item><item><title>Depurando módulos CGI do Lazarus no Apache</title><link>http://feedproxy.google.com/~r/silvioprog/~3/PZsm_7V1d1c/depurando-modulos-cgi-do-lazarus-no.html</link><category>fpWeb</category><category>Aplicativo Web</category><category>CGI</category><author>silvioprog@gmail.com (Silvio Clécio • Blog)</author><pubDate>Fri, 18 Mar 2011 18:43:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-690520279120093094</guid><description>Olá a todos.&lt;br /&gt;
&lt;br /&gt;
Para sessar o longo silêncio que passei sem postar, segue um guia rápido ao estilo &lt;i&gt;&lt;b&gt;silvioprog&lt;/b&gt;&lt;/i&gt;. Boa leitura. :)&lt;br /&gt;
&lt;br /&gt;
&lt;iframe frameborder="0" height="560px" src="https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=false&amp;amp;embedded=true&amp;amp;srcid=0B9LIcsKuN64hMDQ2OTA3YzctZjc5OC00YTRmLTljNWQtOGJiNGQxN2YyZTI2&amp;amp;hl=pt_BR" width="100%"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-690520279120093094?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Ttd2xjTFvk2h63qZwczBooRuXCw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ttd2xjTFvk2h63qZwczBooRuXCw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Ttd2xjTFvk2h63qZwczBooRuXCw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ttd2xjTFvk2h63qZwczBooRuXCw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=PZsm_7V1d1c:Y-UycyEsXzM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=PZsm_7V1d1c:Y-UycyEsXzM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=PZsm_7V1d1c:Y-UycyEsXzM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=PZsm_7V1d1c:Y-UycyEsXzM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=PZsm_7V1d1c:Y-UycyEsXzM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=PZsm_7V1d1c:Y-UycyEsXzM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=PZsm_7V1d1c:Y-UycyEsXzM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=PZsm_7V1d1c:Y-UycyEsXzM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=PZsm_7V1d1c:Y-UycyEsXzM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=PZsm_7V1d1c:Y-UycyEsXzM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=PZsm_7V1d1c:Y-UycyEsXzM:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=PZsm_7V1d1c:Y-UycyEsXzM:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=PZsm_7V1d1c:Y-UycyEsXzM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=PZsm_7V1d1c:Y-UycyEsXzM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=PZsm_7V1d1c:Y-UycyEsXzM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=PZsm_7V1d1c:Y-UycyEsXzM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/PZsm_7V1d1c" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-03-18T22:43:58.052-03:00</atom:updated><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2011/03/depurando-modulos-cgi-do-lazarus-no.html</feedburner:origLink></item><item><title>CGI - Lazarus - Armazenando valores em URLs</title><link>http://feedproxy.google.com/~r/silvioprog/~3/GzX9mZJDutc/cgi-lazarus-armazenando-valores-em-urls.html</link><category>fpWeb</category><category>Aplicativo Web</category><category>CGI</category><author>noreply@blogger.com (Rafael Elias)</author><pubDate>Sun, 10 Oct 2010 13:02:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-1859636186272553944</guid><description>Olá pessoal,&lt;br /&gt;
&lt;br /&gt;
Sou &lt;b&gt;Rafael Elias&lt;/b&gt;, estou aqui novamente para demonstrar através deste pequeno artigo um recurso muito útil no desenvolvimento de aplicações &lt;i&gt;CGI &lt;/i&gt;com &lt;i&gt;Lazarus&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
Boa leitura.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe frameborder="0" height="560px" src="https://docs.google.com/gview?a=v&amp;amp;pid=explorer&amp;amp;chrome=false&amp;amp;api=true&amp;amp;embedded=true&amp;amp;srcid=0B9LIcsKuN64hYTQwM2M5MWEtOGY4ZC00Mjk4LWJkMWYtNjIyMmViOWM0OTRk&amp;amp;hl=pt_BR" width="100%"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-1859636186272553944?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qyyGvVSSo3ql-9F8dyf8Oxye8qY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qyyGvVSSo3ql-9F8dyf8Oxye8qY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qyyGvVSSo3ql-9F8dyf8Oxye8qY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qyyGvVSSo3ql-9F8dyf8Oxye8qY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=GzX9mZJDutc:3WTOku2kiL4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=GzX9mZJDutc:3WTOku2kiL4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=GzX9mZJDutc:3WTOku2kiL4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=GzX9mZJDutc:3WTOku2kiL4:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=GzX9mZJDutc:3WTOku2kiL4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=GzX9mZJDutc:3WTOku2kiL4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=GzX9mZJDutc:3WTOku2kiL4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=GzX9mZJDutc:3WTOku2kiL4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=GzX9mZJDutc:3WTOku2kiL4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=GzX9mZJDutc:3WTOku2kiL4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=GzX9mZJDutc:3WTOku2kiL4:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=GzX9mZJDutc:3WTOku2kiL4:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=GzX9mZJDutc:3WTOku2kiL4:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=GzX9mZJDutc:3WTOku2kiL4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=GzX9mZJDutc:3WTOku2kiL4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=GzX9mZJDutc:3WTOku2kiL4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/GzX9mZJDutc" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2010-10-10T17:02:37.891-03:00</atom:updated><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2010/10/cgi-lazarus-armazenando-valores-em-urls.html</feedburner:origLink></item><item><title>Criando uma aplicação WEB com Lazarus</title><link>http://feedproxy.google.com/~r/silvioprog/~3/Ue9H_3Fix08/criando-uma-aplicacao-web-com-lazarus.html</link><category>fpWeb</category><category>Aplicativo Web</category><category>Artigos</category><category>CGI</category><author>noreply@blogger.com (Rafael Elias)</author><pubDate>Tue, 21 Sep 2010 16:14:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-8583382590788038986</guid><description>Olá pessoal, meu nome é Rafael Elias, eu sou o mais novo autor do&lt;i&gt; programmer ObjectPascal&lt;/i&gt;, e para inaugurar minha chegada, segue uma postagem sobre &lt;i&gt;CGI&lt;/i&gt; no &lt;i&gt;Lazarus&lt;/i&gt;. Boa leitura! :)   &lt;iframe src="https://docs.google.com/gview?a=v&amp;amp;pid=explorer&amp;amp;chrome=false&amp;amp;api=true&amp;amp;embedded=true&amp;amp;srcid=0B9LIcsKuN64hZTAyYTBiMzctZWEyNy00NmNlLWExMTUtMGYwOTllMDc4OTk4&amp;amp;hl=pt_BR" width="100%" frameborder="0" height="560px"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-8583382590788038986?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nN0TIwtdM1R2PjrtJ6AesJW491Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nN0TIwtdM1R2PjrtJ6AesJW491Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nN0TIwtdM1R2PjrtJ6AesJW491Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nN0TIwtdM1R2PjrtJ6AesJW491Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Ue9H_3Fix08:YzmAjHIFYcQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Ue9H_3Fix08:YzmAjHIFYcQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Ue9H_3Fix08:YzmAjHIFYcQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Ue9H_3Fix08:YzmAjHIFYcQ:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Ue9H_3Fix08:YzmAjHIFYcQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=Ue9H_3Fix08:YzmAjHIFYcQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Ue9H_3Fix08:YzmAjHIFYcQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Ue9H_3Fix08:YzmAjHIFYcQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=Ue9H_3Fix08:YzmAjHIFYcQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Ue9H_3Fix08:YzmAjHIFYcQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Ue9H_3Fix08:YzmAjHIFYcQ:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=Ue9H_3Fix08:YzmAjHIFYcQ:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Ue9H_3Fix08:YzmAjHIFYcQ:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Ue9H_3Fix08:YzmAjHIFYcQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=Ue9H_3Fix08:YzmAjHIFYcQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Ue9H_3Fix08:YzmAjHIFYcQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/Ue9H_3Fix08" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2010-09-23T07:04:37.074-03:00</atom:updated><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2010/09/criando-uma-aplicacao-web-com-lazarus.html</feedburner:origLink></item><item><title>Lazarus e CGI: Criando uma janela de login - Parte 2</title><link>http://feedproxy.google.com/~r/silvioprog/~3/ODepeqLYU0w/lazarus-e-cgi-criando-uma-janela-de_22.html</link><category>fpWeb</category><category>Aplicativo Web</category><category>Internet</category><category>Artigos</category><category>CGI</category><author>gsilvioprog@gmail.com (programmer ObjectPascal)</author><pubDate>Thu, 22 Jul 2010 10:08:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-7668279943549198474</guid><description>Para ampliar, use o botão (+) ou clique no quadrado a direita dele, ou baixe o artigo completo em formato&amp;nbsp;&lt;b&gt;PDF&amp;nbsp;&lt;/b&gt;com alta definição clicando&amp;nbsp;&lt;b&gt;&lt;a href="http://www.silvioprog.com.br/documentos/LazaruseCGI-Criandoumajaneladelogin-Parte2.pdf"&gt;aqui&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;iframe frameborder="0" height="560px" src="http://docs.google.com/gview?a=v&amp;amp;pid=explorer&amp;amp;chrome=false&amp;amp;api=true&amp;amp;embedded=true&amp;amp;srcid=0B-INgE1KUEIlNTlkMmU4ZTctZDNjNC00NmVkLThmNjctMjFmZGEwMDAzZDlh&amp;amp;hl=pt_BR" width="100%"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-7668279943549198474?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JihiRjlPZeE2HhSYhG2aY2wLoX8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JihiRjlPZeE2HhSYhG2aY2wLoX8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JihiRjlPZeE2HhSYhG2aY2wLoX8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JihiRjlPZeE2HhSYhG2aY2wLoX8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=ODepeqLYU0w:0i9GbpjeEmY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=ODepeqLYU0w:0i9GbpjeEmY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=ODepeqLYU0w:0i9GbpjeEmY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=ODepeqLYU0w:0i9GbpjeEmY:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=ODepeqLYU0w:0i9GbpjeEmY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=ODepeqLYU0w:0i9GbpjeEmY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=ODepeqLYU0w:0i9GbpjeEmY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=ODepeqLYU0w:0i9GbpjeEmY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=ODepeqLYU0w:0i9GbpjeEmY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=ODepeqLYU0w:0i9GbpjeEmY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=ODepeqLYU0w:0i9GbpjeEmY:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=ODepeqLYU0w:0i9GbpjeEmY:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=ODepeqLYU0w:0i9GbpjeEmY:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=ODepeqLYU0w:0i9GbpjeEmY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=ODepeqLYU0w:0i9GbpjeEmY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=ODepeqLYU0w:0i9GbpjeEmY:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/ODepeqLYU0w" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2010-07-23T02:11:23.274-03:00</atom:updated><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">6</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2010/07/lazarus-e-cgi-criando-uma-janela-de_22.html</feedburner:origLink></item><item><title>Lazarus e CGI: Criando uma janela de login - Parte 1.</title><link>http://feedproxy.google.com/~r/silvioprog/~3/okHdUI_-a9A/lazarus-e-cgi-criando-uma-janela-de.html</link><category>fpWeb</category><category>Aplicativo Web</category><category>Internet</category><category>Artigos</category><category>CGI</category><author>gsilvioprog@gmail.com (programmer ObjectPascal)</author><pubDate>Fri, 16 Jul 2010 12:44:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-1960906261641870896</guid><description>&lt;hr /&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Neste artigo iremos aprender como criar uma janela de login no &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Lazarus&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, usando um projeto do tipo &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;CGI Aplication&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;. Como servidor iremos usar o &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Apache&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, que é robusto, estável, &lt;/span&gt;&lt;i&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;cross&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; e &lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;open source&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;Para facilitar a compreensão dividirei o artigo em três partes, que serão: 1 - Instalando o &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Apache &lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;no &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Linux &lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;e &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Windows&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, instalando o pacote &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;WebLaz &lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;no &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Lazarus&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;; 2 - Criando uma janela de login e aproveitando um &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;template &lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;gratuito, coletando os dados digitados na janela de login; 3 - Comunicando a janela de login com o &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;PostgreSQL&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, criando uma janela simples de cadastro de usuários.&lt;/span&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #666666;"&gt;&amp;nbsp;Instalando o Apache no Windows (Seven)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Inicialmente baixe o setup de instalação do &lt;i&gt;Apache&lt;/i&gt;, disponível no link a seguir:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.apache.org/dist/httpd/binaries/win32/httpd-2.2.15-win32-x86-openssl-0.9.8m-r2.msi"&gt;http://www.apache.org/dist/httpd/binaries/win32/httpd-2.2.15-win32-x86-openssl-0.9.8m-r2.msi&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Feito isso, inicie a instalação e prossiga conforme mostra a sequencia de imagens a seguir.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_95z3O3W55Lw/TECyPLYVw3I/AAAAAAAAAlA/MxM4iJMiy_s/s1600/1-instalacao_do_apache.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="307" src="http://4.bp.blogspot.com/_95z3O3W55Lw/TECyPLYVw3I/AAAAAAAAAlA/MxM4iJMiy_s/s400/1-instalacao_do_apache.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_95z3O3W55Lw/TECyVig9U9I/AAAAAAAAAlI/wYkJReXjV5s/s1600/2-instalacao_do_apache.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="307" src="http://2.bp.blogspot.com/_95z3O3W55Lw/TECyVig9U9I/AAAAAAAAAlI/wYkJReXjV5s/s400/2-instalacao_do_apache.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_95z3O3W55Lw/TECyeW_fK9I/AAAAAAAAAlQ/kqaTpUBMFs0/s1600/3-instalacao_do_apache.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="307" src="http://3.bp.blogspot.com/_95z3O3W55Lw/TECyeW_fK9I/AAAAAAAAAlQ/kqaTpUBMFs0/s400/3-instalacao_do_apache.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_95z3O3W55Lw/TECylTBsvxI/AAAAAAAAAlY/Q-01zLWeiYE/s1600/4-instalacao_do_apache.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="307" src="http://4.bp.blogspot.com/_95z3O3W55Lw/TECylTBsvxI/AAAAAAAAAlY/Q-01zLWeiYE/s400/4-instalacao_do_apache.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_95z3O3W55Lw/TECyrt7cGTI/AAAAAAAAAlg/mGqIqAAVLp0/s1600/5-instalacao_do_apache.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="307" src="http://1.bp.blogspot.com/_95z3O3W55Lw/TECyrt7cGTI/AAAAAAAAAlg/mGqIqAAVLp0/s400/5-instalacao_do_apache.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_95z3O3W55Lw/TECyybtrZQI/AAAAAAAAAlo/KKwT8pgq72w/s1600/6-instalacao_do_apache.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="307" src="http://3.bp.blogspot.com/_95z3O3W55Lw/TECyybtrZQI/AAAAAAAAAlo/KKwT8pgq72w/s400/6-instalacao_do_apache.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_95z3O3W55Lw/TECy4FC9mgI/AAAAAAAAAlw/hwMofpw51yc/s1600/7-instalacao_do_apache.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="307" src="http://4.bp.blogspot.com/_95z3O3W55Lw/TECy4FC9mgI/AAAAAAAAAlw/hwMofpw51yc/s400/7-instalacao_do_apache.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_95z3O3W55Lw/TECy_eAxKOI/AAAAAAAAAl4/pULqy8Z6By4/s1600/8-instalacao_do_apache.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="307" src="http://1.bp.blogspot.com/_95z3O3W55Lw/TECy_eAxKOI/AAAAAAAAAl4/pULqy8Z6By4/s400/8-instalacao_do_apache.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Se tudo ocorreu bem até aqui, você poderá testar o &lt;i&gt;Apache &lt;/i&gt;abrindo um browser e acessando o endereço local &lt;a href="http://localhost/"&gt;http://localhost&lt;/a&gt;, deverá aparecer a mensagem &lt;b&gt;It works!&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_95z3O3W55Lw/TECzK1jF3EI/AAAAAAAAAmA/tV9ePEcH66c/s1600/9-testando_o_apache.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="298" src="http://3.bp.blogspot.com/_95z3O3W55Lw/TECzK1jF3EI/AAAAAAAAAmA/tV9ePEcH66c/s400/9-testando_o_apache.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #666666;"&gt;&amp;nbsp;Instalando o Apache no Linux (Ubuntu 10.04)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Instalar o &lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Apache&lt;/span&gt; &lt;/i&gt;&lt;/b&gt;no Linux é muito fácil, abra um terminal e digite:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="background-color: purple;"&gt;&amp;nbsp;$ sudo apt-get install apache2&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Para testar, basta acessar o mesmo endereço &lt;i&gt;localhost&lt;/i&gt; citado acima. Também deverá aparecer a mensagem &lt;b&gt;It works!&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #666666;"&gt;&amp;nbsp;Instalando o pacote WebLaz no Lazarus&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Abra o &lt;i&gt;Lazarus&lt;/i&gt;&amp;nbsp;e em seguida vá ao menu &lt;i&gt;Package | Install/Uninstall packages …&lt;/i&gt;, na lista em &lt;i&gt;Do not install&lt;/i&gt; escolha o &lt;i&gt;weblaz&lt;/i&gt;. Logo após clique em &lt;i&gt;Install selection&lt;/i&gt; e em seguida &lt;i&gt;Save and rebuild IDE&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_95z3O3W55Lw/TEF1nwPn4KI/AAAAAAAAAmI/sGXvlmHa9RU/s1600/weblaz.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="323" src="http://2.bp.blogspot.com/_95z3O3W55Lw/TEF1nwPn4KI/AAAAAAAAAmI/sGXvlmHa9RU/s400/weblaz.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Simples assim!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #666666;"&gt;&amp;nbsp;Finalizando&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Chegando até aqui sem nenhum erro, você terá o &lt;i&gt;Apache &lt;/i&gt;instalado em seu sistema, e o &lt;i&gt;Lazarus&lt;/i&gt; prontinho para desenvolvimento web! :-)&lt;br /&gt;
&lt;br /&gt;
No próximo artigo iremos criar uma janela de login, aproveitar o HTML de um &lt;i&gt;template &lt;/i&gt;gratuito, e coletar os dados digitados nela. Aguardem...!&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://silvioclecio.blogspot.com/"&gt;Silvio Clécio&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Artigo disponível em formato &lt;b&gt;PDF &lt;/b&gt;&lt;a href="http://www.silvioprog.com.br/documentos/LazaruseCGI-Criandoumajaneladelogin-Parte1.pdf?attredirects=0&amp;amp;d=1"&gt;aqui&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-1960906261641870896?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3uiWyxdF6ovwyzj4iH04NYVCso4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3uiWyxdF6ovwyzj4iH04NYVCso4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3uiWyxdF6ovwyzj4iH04NYVCso4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3uiWyxdF6ovwyzj4iH04NYVCso4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=okHdUI_-a9A:sniWmJX2m5Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=okHdUI_-a9A:sniWmJX2m5Q:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=okHdUI_-a9A:sniWmJX2m5Q:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=okHdUI_-a9A:sniWmJX2m5Q:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=okHdUI_-a9A:sniWmJX2m5Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=okHdUI_-a9A:sniWmJX2m5Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=okHdUI_-a9A:sniWmJX2m5Q:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=okHdUI_-a9A:sniWmJX2m5Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=okHdUI_-a9A:sniWmJX2m5Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=okHdUI_-a9A:sniWmJX2m5Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=okHdUI_-a9A:sniWmJX2m5Q:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=okHdUI_-a9A:sniWmJX2m5Q:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=okHdUI_-a9A:sniWmJX2m5Q:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=okHdUI_-a9A:sniWmJX2m5Q:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=okHdUI_-a9A:sniWmJX2m5Q:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=okHdUI_-a9A:sniWmJX2m5Q:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/okHdUI_-a9A" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2010-07-17T06:32:59.522-03:00</atom:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_95z3O3W55Lw/TECyPLYVw3I/AAAAAAAAAlA/MxM4iJMiy_s/s72-c/1-instalacao_do_apache.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2010/07/lazarus-e-cgi-criando-uma-janela-de.html</feedburner:origLink></item><item><title>Criando um aplicativo CGI com FreePascal - Parte 4 (Conclusões)</title><link>http://feedproxy.google.com/~r/silvioprog/~3/lNj1xY6W9fw/criando-um-aplicativo-cgi-com_06.html</link><category>FreeSpider</category><category>fpWeb</category><category>Aplicativo Web</category><category>FreePascal</category><category>CGI</category><author>noreply@blogger.com (Luiz Américo)</author><pubDate>Tue, 06 Jul 2010 13:05:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-5138441620802676111</guid><description>&lt;span style="font-weight:bold;"&gt;Por Luiz Américo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Neste último artigo sobre programas CGI com FreePascal vou resumir as vantagens e desvantagens de cada ferramenta de desenvolvimento.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;fpWeb&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Vantagens&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Incluído na distribuição padrão do FreePascal/Lazarus. Apesar de que para ter a versão mais recente será necessário usar o repositório &lt;span style="font-style:italic;"&gt;trunk&lt;/span&gt; do FreePascal&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Organização dos componentes orientada a objeto, permitindo flexibilidade para expandir/adaptar as funções. Um exemplo é o mecanismo de produção de conteúdo o qual permite criar combinações complexas, reutilizar conteúdo ou criar conteúdo personalizado. A extensão WebData, que permite retornar dados em &lt;a href="http://www.json.org/"&gt;JSON&lt;/a&gt; em vez de HTML, faz uso desta extensibilidade ao criar classes descendentes de módulo e de produção de conteúdo específicas&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Suporte a &lt;a href="http://json-rpc.org/"&gt;JSON-RPC&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Suporte (teórico) a FastCGI e módulos apache&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Desenvolvida por programadores experientes (mantenedores do FreePascal)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Desvantagens&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Ausência de documentação&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Classes de geração de HTML de difícil aprendizado, pouco intuitivas&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Mecanismo de identificação do módulo/ação a ser carregado/executada confuso. Se após a URL vier apenas um caminho este definirá a ação. Exemplo: http://localhost/mycgi/action será executado a ação "action". Se tiver dois caminhos, o primeiro será o módulo e depois será a ação. Exemplo http://localhost/mycgi/action/search carregará o módulo "action" e executará a ação "search". Fácil de se confundir!. Também é possível determinar o módulo a través da variável ModuleVariable (padrão é 'Module'). Exemplo: http://localhost/mycgi?module=mymodule. Pra piorar, se tiver sido definido mais de um módulo e não foi definido qual módulo carregar através dos critérios anteriores uma exceção ocorrerá&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Não é possível carregar mais de um módulo ao mesmo tempo&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Não consegui fazer funcionar o FastCGI. Postei uma mensagem na lista do FreePascal e ninguém soube responder&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Métodos para manipulação de sessão são atreladas a um módulo. E no caso de carregar outro módulo? Terá que duplicar o código?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Cada módulo e cada ação tem uma propriedade TFPTemplate. Nem sempre será utilizado um template e em se tratando de CGI cada recurso carregado a menos é vantagem. Além disso pode-se optar por um mecanismo de template diferente&lt;/li&gt;&lt;br /&gt;&lt;li&gt;O mecanismo de template, pelos exemplos, me pareceram ineficientes. Por exemplo para completar dados uma tabela se concatenada uma string em &lt;span style="font-style:italic;"&gt;loop&lt;/span&gt;: ResultStr := ResultStr + RowStr. Cada execução realoca a memória da string na memória. Para poucas linhas não tem problema porém para mais dados...&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Mais de uma propriedade para adicionar conteúdo à resposta (Content e Contents). Desnecessário e confuso&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;FreeSpider&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Vantagens&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Tem documentação&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Mecanismo de determinação de carregamento de módulos e execução de ação simples e flexível&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Possibilidade de se carregar até dois módulos&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Criação de conteúdo HTML fácil e intuitiva&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Desvantagens&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Não é distribuído com o FreePascal/Lazarus&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Documentação incorreta. Cita a possibilidade de se acessar o módulo principal do segundo módulo porém isso leva a uma &lt;span style="font-style:italic;"&gt;Access violation&lt;/span&gt;. É possível acessar o módulo principal, mas para isso o método Execute do TSpiderCGI deve ser chamado fora do evento OnCreate&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Modelo de aplicação (gerado ao criar um novo projeto) e exemplos disponibilizados com vazamentos de memória. Veja o meu exemplo no artigo anterior como evitar vazamentos de memória&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Pouco extensível. Se quiser criar algo mais complexo vai ter ser na mão mesmo&lt;/li&gt;&lt;br /&gt;&lt;li&gt;HTML gerado com atributos obsoletos (bgcolor) além de não compatível com XHTML (marcação em maiúscula)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Uso de &lt;span style="font-weight:bold;"&gt;WriteLn&lt;/span&gt; para retornar os dados (Como é uma função especial, ela têm uma sobrecarga natural para tratar o diferentes tipos de dados etc)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Dependência da LCL e portanto com arquivos grandes (consertado na versão 1.2.1)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Vazamentos de memória de objetos internos (consertado na versão 1.2.1)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Conclusões&lt;/span&gt;&lt;br /&gt;O FreeSpider é mais simples de entender e usar. O fpWeb requer um pouco mais de estudo porém oferece mais recursos.&lt;br /&gt;Se tivesse de escolher entre os dois para um projeto maior, ficaria com o fpWeb, entretanto o modificaria para ficar mais leve e funcional: removeria o acoplamento ao TFPTemplate, mudaria a manipulação de sessão para o TCustomWebApplication, removeria algumas propriedades desnecessárias e simplificaria o algoritmo de determinação do módulo a ser carregado.&lt;br /&gt;Além disso, seria necessário ver o que há de errado com o FastCGI, que, para aplicativos complexos e com necessidade de alta performance é indispensável.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-5138441620802676111?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tZ1yy18qyOJjjHl9_XpvqS0ea8Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tZ1yy18qyOJjjHl9_XpvqS0ea8Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tZ1yy18qyOJjjHl9_XpvqS0ea8Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tZ1yy18qyOJjjHl9_XpvqS0ea8Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=lNj1xY6W9fw:uV-0-anFHPo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=lNj1xY6W9fw:uV-0-anFHPo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=lNj1xY6W9fw:uV-0-anFHPo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=lNj1xY6W9fw:uV-0-anFHPo:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=lNj1xY6W9fw:uV-0-anFHPo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=lNj1xY6W9fw:uV-0-anFHPo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=lNj1xY6W9fw:uV-0-anFHPo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=lNj1xY6W9fw:uV-0-anFHPo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=lNj1xY6W9fw:uV-0-anFHPo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=lNj1xY6W9fw:uV-0-anFHPo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=lNj1xY6W9fw:uV-0-anFHPo:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=lNj1xY6W9fw:uV-0-anFHPo:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=lNj1xY6W9fw:uV-0-anFHPo:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=lNj1xY6W9fw:uV-0-anFHPo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=lNj1xY6W9fw:uV-0-anFHPo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=lNj1xY6W9fw:uV-0-anFHPo:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/lNj1xY6W9fw" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2010-07-06T19:29:29.611-03:00</atom:updated><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">6</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2010/07/criando-um-aplicativo-cgi-com_06.html</feedburner:origLink></item><item><title>Criando um aplicativo CGI com FreePascal - Parte 3 (FreeSpider)</title><link>http://feedproxy.google.com/~r/silvioprog/~3/56v2wrn0pmE/criando-um-aplicativo-cgi-com.html</link><category>FreeSpider</category><category>Aplicativo Web</category><category>FreePascal</category><category>CGI</category><author>noreply@blogger.com (Luiz Américo)</author><pubDate>Thu, 01 Jul 2010 16:57:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-2031449035780467226</guid><description>&lt;span style="font-weight:bold;"&gt;Por Luiz Américo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Introdução&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O &lt;a href="http://motaz.freevar.com/freespider.htm"&gt;FreeSpider&lt;/a&gt; é uma das alternativas que o FreePascal dispõe para desenvolvimento de programas CGI. Ele é relativamente simples quando comparado com o fpWeb. Neste artigo, vou falar como criar o mesmo &lt;a href="http://blikblum.atbhost.net/cgi-bin/viewcid_fpweb"&gt;exemplo&lt;/a&gt; do &lt;a href="http://blog.silvioprog.com.br/2010/06/criando-um-aplicativo-cgi-com_27.html"&gt;artigo anterior&lt;/a&gt; usando o FreeSpider. O código fonte encontra-se &lt;a href="http://www.silvioprog.com.br/downloads/ViewCid-CGI.zip?attredirects=0&amp;d=1"&gt;aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Preparação&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Antes de mais nada, é bom dar uma lida na documentação disponível na página do FreeSpider.&lt;br /&gt;&lt;br /&gt;Após instalar o componente, crie um novo projeto "FreeSpider CGI Web Application". Será criado um módulo comum (descendente de TDataModule) e um programa principal que cria uma instância deste módulo. Esta é uma das principais diferenças com relação ao fpWeb o qual utiliza um módulo especializado (TFPWebModule) e um descendente especializado de TCustomApplication para gerenciar o protocolo CGI (ou FastCGI).&lt;br /&gt;&lt;br /&gt;Desta forma, é necessário acrescentar um componente TSpiderCGI, que é o responsável por manipular e direcionar as requisições CGI. O TSpiderCGI tem um evento OnRequest que é chamado se não for tiver sido registrado nenhuma ação para o caminho (Path) solicitado.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Caminhos e Ações&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A forma de usar ações no FreeSpider é um pouco diferente do fpWeb. Em vez de ter uma propriedade (Actions) no módulo que maneja todas as ações, é necessário colocar um componente TSpiderAction no módulo para cada ação. Este contém uma propriedade Path que é o caminho associado à ação.&lt;br /&gt;&lt;br /&gt;A ação a ser executada é determinada pelo caminho passado pelo programa, no caso, tudo aquilo que vier após o endereço do programa. Por exemplo: http://localhost/cgi-bin/mycgi/action/subaction o caminho a ser executado será "/action/subaction".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Carregamento de módulos por demanda&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Uma das principais características do FreeSpider é a possibilidade de se carregar somente os módulos necessários para executar a ação desejada. Para isso é necessário registrar o módulo através da função AddDataModule do TSpiderCGI. Pode-se registrar um número arbitrário de módulos a cada módulo pode ser associado a vários caminhos.&lt;br /&gt;&lt;br /&gt;Na prática, será sempre carregado o módulo principal que tem o componente TSpiderCGI e é criado explicitamente no código do programa. Caso o caminho solicitado está associado a um dos módulos registrados, este é carregado dinamicamente.&lt;br /&gt;&lt;br /&gt;Uma das vantagens deste recurso é a possibilidade de compartilhar funções e componentes do módulo principal. Entretanto, se for seguir a documentação oficial a qual diz para registrar os módulos e chamar TSpiderCGI.Execute no evento OnCreate do módulo principal, ao tentar acessar o módulo principal a partir do secundário dará um erro pois, neste momento, a variável do módulo principal ainda não foi definida. A solução encontrada foi registrar os módulos e chamar TSpiderCGI.Execute no código do programa (veja o código do exemplo).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;O programa&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O programa de exemplo é exatamente igual ao proposto no artigo anterior. A sua estrutura conta com dois módulos:&lt;br /&gt;&lt;br /&gt;1) O módulo principal no qual foi definido com um evento OnRequest responsável por retornar o formulário de pesquisa. O código HTML é criado com a ajuda do componente TSpiderForm que é bastante simples de usar: a função AddText adiciona texto/rótulo, AddInput adiciona os vários tipos de controles de entrada de dados (no caso foi utilizado uma entrada de texto e um botão de submissão de dados), a propriedade Action define a ação a ser executada quando o formulário for submetido.&lt;br /&gt;&lt;br /&gt;2) O módulo secundário que foi registrado associado ao caminho "/searchcid" e é responsável por retornar os resultados da consulta. Ele utiliza uma função do módulo principal para criar o formulário de pesquisa. A tabela com o resultado da pesquisa é criada com o auxílio do componente TSpiderTable o qual basta ligar ao TDataset desejado. &lt;br /&gt;&lt;br /&gt;Note que, ao contrário da versão do fpWeb, quando é solicitado a página principal (caminho = "/"), o componente TSqlite3Dataset não é carregado.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Bugs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Enquanto criava este programa me deparei com uma série de problemas com o FreeSpider, sendo os principais vazamentos de memória e dependência da LCL que cria arquivos enormes. Desta forma, fiz uma versão corrigindo estes problemas (o arquivo ficou um terço menor do que a versão do fpWeb) e coloquei &lt;a href="http://sites.google.com/site/silvioprogbs/downloads/freespider-1.2.0-not-oficial.zip?attredirects=0&amp;d=1"&gt;aqui&lt;/a&gt;. Já enviei para o autor as modificações.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-2031449035780467226?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TsW5PhG_MzlCcmVXKpuCUy66gfM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TsW5PhG_MzlCcmVXKpuCUy66gfM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TsW5PhG_MzlCcmVXKpuCUy66gfM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TsW5PhG_MzlCcmVXKpuCUy66gfM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=56v2wrn0pmE:gcBVM7Bj1fI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=56v2wrn0pmE:gcBVM7Bj1fI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=56v2wrn0pmE:gcBVM7Bj1fI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=56v2wrn0pmE:gcBVM7Bj1fI:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=56v2wrn0pmE:gcBVM7Bj1fI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=56v2wrn0pmE:gcBVM7Bj1fI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=56v2wrn0pmE:gcBVM7Bj1fI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=56v2wrn0pmE:gcBVM7Bj1fI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=56v2wrn0pmE:gcBVM7Bj1fI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=56v2wrn0pmE:gcBVM7Bj1fI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=56v2wrn0pmE:gcBVM7Bj1fI:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=56v2wrn0pmE:gcBVM7Bj1fI:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=56v2wrn0pmE:gcBVM7Bj1fI:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=56v2wrn0pmE:gcBVM7Bj1fI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=56v2wrn0pmE:gcBVM7Bj1fI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=56v2wrn0pmE:gcBVM7Bj1fI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/56v2wrn0pmE" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2010-07-02T17:18:55.650-03:00</atom:updated><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">7</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2010/07/criando-um-aplicativo-cgi-com.html</feedburner:origLink></item><item><title>Criando um aplicativo CGI com FreePascal - Parte 2 (fpWeb)</title><link>http://feedproxy.google.com/~r/silvioprog/~3/Q6ZXcV-eHQ4/criando-um-aplicativo-cgi-com_27.html</link><category>fpWeb</category><category>Aplicativo Web</category><category>FreePascal</category><category>CGI</category><author>noreply@blogger.com (Luiz Américo)</author><pubDate>Sun, 27 Jun 2010 12:25:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-2059389788701263013</guid><description>&lt;span style="font-weight:bold;"&gt;Por Luiz Américo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Introdução&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O programa que decidi fazer realiza uma busca em uma base de dados da Classificação Internacional de Doenças (&lt;a href="http://pt.wikipedia.org/wiki/Classifica%C3%A7%C3%A3o_internacional_de_doen%C3%A7as"&gt;CID-10&lt;/a&gt;). Para simplificar as coisas, fiz um programa somente com visualização de dados, sem editar ou acrescentar dados. &lt;br /&gt;&lt;br /&gt;A base de dados utilizado foi Sqlite3. Vale ressaltar que a escolha por esse banco de dados foi somente devido a simplicidade de uso visto que para programas que necessitam de alta concorrência e disponibilidade é necessário o uso de um sistema de gerenciamento de bancos de dados apropriado para a arquitetura cliente-servidor.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Preparação&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Após instalar o componente weblaz (presente na pasta [lazarus]\fpweb), criei um projeto "CGI Application". São criados dois arquivos. O programa principal e uma unit com um TFPWebModule (descendente de TDataModule) o qual é registrado na inicialização através da função RegisterHTTPModule. A primeira coisa que fiz foi renomear o "Data Module" de FPWebModule1 para MainDataModule. Aí ocorreu um problema que pode trazer algum problema: na chamada para RegisterHTTPModule o nome do Data Module não é atualizado.&lt;br /&gt;&lt;br /&gt;Outro problema que encontrei foi o uso do mecanismo antigo para carregar recursos (LResources). O &lt;a href="http://lazarus-dev.blogspot.com/2010/02/work-on-0930-changes-in-resource.html"&gt;mecanismo novo&lt;/a&gt; permite um arquivo menor, menos memória, além de permitir remover a dependência da LCL, aspectos fundamentais para um programa CGI.&lt;br /&gt;&lt;br /&gt;Um ponto falho no fpWeb é a ausência de documentação. Após olhar nos demos, percebi que para começar é suficiente adicionar um evento OnRequest do TFPWebModule, adicionar alguma informação em AResponse.Contents e modificar Handled para True. Com isto já é possível mostrar alguma página da web, mas para algo mais complexo é necessário separar a criação de cada página/componente do programa. É aqui que entra o conceito de ações ("Actions").&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ações ("Actions")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Com as Ações é possível responder de forma diferente de acordo com a solicitação na URL. Cada Ação está associada a um evento OnRequest semelhante ao do TFPWebModule.&lt;br /&gt;&lt;br /&gt;Para adicionar uma Ação clique na propriedade Actions (uma coleção de TFPWebAction) que aparecerá um editor. O nome da Ação a ser executada deverá ser definido na propriedade Name. Além disso é possível definir uma Ação padrão através da propriedade Default, a qual será chamada se não for encontrada a Ação solicitada. &lt;br /&gt;&lt;br /&gt;A Ação a ser chamada é definida de duas formas. Na primeira, passando um campo de nome "action" na URL, por exemplo, http://localhost/cgi-bin/mycgi?action=myaction. Para exemplos de como usar campos na URL leiam este &lt;a href="http://en.wikipedia.org/wiki/Query_string"&gt;artigo&lt;/a&gt;. A outra forma é chamar o nome da Ação logo após o endereço do programa: http://localhost/cgi-bin/mycgi/myaction.&lt;br /&gt;&lt;br /&gt;A sequência para se decidir qual Ação será chamada é a seguinte:&lt;br /&gt;&lt;br /&gt;1) TFPModule.OnRequest é chamado. Se não tiver evento definido ou se Handled for False tenta o próximo.&lt;br /&gt;2) Verifica se tem um Template definido. Se não tenta o próximo.&lt;br /&gt;3) Verifica se a propriedade Actions tem a ação solicitada ou utiliza a ação padrão.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Modelos (Templates)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cada TFPWebModule e TFPWebAction tem associado uma propriedade Template (TFPTemplate). Não cheguei a utilizar esse recurso por achar desnecessário neste caso. Além disso achei um pouco confusa a forma de utilizar. Em outro artigo vou fazer mais comentários sobre esta função do fpWeb.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Produtores de Conteúdo (Content Producers)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cada ação tem uma propriedade ContentProducer que como o nome diz fica responsável pela criação de conteúdo daquela ação. O fpWeb vem com vários produtores de conteúdo padrão como THTMLPageProducer (responsável pela criação de uma página web) com a possibilidade de se definir o cabeçalho, o rodapé e o corpo. Cada uma destas partes pode ser criada através de eventos ou ligando a outros componentes produtores de conteúdo. Isto dá uma flexibilidade enorme ao projeto visto que você pode, por exemplo, definir um produtor de conteúdo para o cabeçalho e reutilizar em diferentes páginas. Tem também outros componentes interessantes (THTMLDatasetForm*Producer) que possibilitam criar formulários completos sem a necessidade de código. E na versão de desenvolvimento tem componentes para se retornar dados em formato JSON.&lt;br /&gt;&lt;br /&gt;O ponto negativo fica pela dificuldade de se produzir conteúdo através da classe disponível para criação de HTML (THTMLWriter). Eu tentei utiliza-lá e desisti visto a quantidade de código necessário para se fazer algo simples.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;O programa (CIDView)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Atenção: não vou entrar em detalhes do HTML usado, existe um monte de informação na web sobre isto&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Bom, eu falei um bocado sobre o framework, mas e o programa?&lt;br /&gt;&lt;br /&gt;O programa é bem simples:&lt;br /&gt;&lt;br /&gt;Na tela inicial tem um formulário para entrar com o nome da doença a ser pesquisada e um botão para pesquisar. Após pressionar um botão, o resultado da pesquisa é mostrado, mantendo-se o formulário para uma nova pesquisa.&lt;br /&gt;&lt;br /&gt;Para isto defini duas ações:&lt;br /&gt;&lt;br /&gt;DefaultAction (Default = True): Retorna o título e o formulário de pesquisa&lt;br /&gt;SearchCid: Retorna o mesmo que DefaultAction mais os resultados da pesquisa&lt;br /&gt;&lt;br /&gt;Além disso utilizei os eventos BeforeRequest e AfterResponse para configurar a pesquisa ao banco de dados.&lt;br /&gt;&lt;br /&gt;O código do programa se encontra &lt;a href="http://www.silvioprog.com.br/downloads/ViewCid-CGI.zip?attredirects=0&amp;d=1"&gt;aqui&lt;/a&gt; e pode ser executado &lt;a href="http://blikblum.atbhost.net/cgi-bin/viewcid_fpweb"&gt;aqui&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Acho que por hoje é só. Nos próximos artigos mostrarei como usei o FreeSpider para fazer o mesmo programa e as minhas críticas à arquitetura e implementação dos ambientes de desenvolvimento utilizados, pois nem tudo são flores...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-2059389788701263013?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cOiv1zsoe7Qg-XRSFyyehWfTVTc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cOiv1zsoe7Qg-XRSFyyehWfTVTc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cOiv1zsoe7Qg-XRSFyyehWfTVTc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cOiv1zsoe7Qg-XRSFyyehWfTVTc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Q6ZXcV-eHQ4:QIBXUeFTc-Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Q6ZXcV-eHQ4:QIBXUeFTc-Y:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Q6ZXcV-eHQ4:QIBXUeFTc-Y:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Q6ZXcV-eHQ4:QIBXUeFTc-Y:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Q6ZXcV-eHQ4:QIBXUeFTc-Y:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=Q6ZXcV-eHQ4:QIBXUeFTc-Y:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Q6ZXcV-eHQ4:QIBXUeFTc-Y:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Q6ZXcV-eHQ4:QIBXUeFTc-Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=Q6ZXcV-eHQ4:QIBXUeFTc-Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Q6ZXcV-eHQ4:QIBXUeFTc-Y:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Q6ZXcV-eHQ4:QIBXUeFTc-Y:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=Q6ZXcV-eHQ4:QIBXUeFTc-Y:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Q6ZXcV-eHQ4:QIBXUeFTc-Y:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Q6ZXcV-eHQ4:QIBXUeFTc-Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=Q6ZXcV-eHQ4:QIBXUeFTc-Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Q6ZXcV-eHQ4:QIBXUeFTc-Y:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/Q6ZXcV-eHQ4" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2010-07-02T17:26:07.067-03:00</atom:updated><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2010/06/criando-um-aplicativo-cgi-com_27.html</feedburner:origLink></item><item><title>Criando um aplicativo CGI com FreePascal - Parte 1 (Introdução)</title><link>http://feedproxy.google.com/~r/silvioprog/~3/pIgerVTo2oM/criando-um-aplicativo-cgi-com.html</link><category>Aplicativo Web</category><category>FreePascal</category><category>CGI</category><author>noreply@blogger.com (Luiz Américo)</author><pubDate>Sun, 27 Jun 2010 08:32:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-7039531530440955221</guid><description>&lt;span style="font-weight:bold;"&gt;Por Luiz Américo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Recentemente, tem aumentado o interesse em se criar aplicativos web utilizando o FreePascal. Ao contrário de linguagens interpretadas como PHP, Perl ou Python, não é possível, atualmente, utilizar programas em pascal &lt;span style="font-weight:bold;"&gt;não compilados&lt;/span&gt; para construir aplicativos web. Entretanto é possível utilizar o FreePascal através do protocolo &lt;a href="http://en.wikipedia.org/wiki/Common_Gateway_Interface"&gt;CGI&lt;/a&gt;/&lt;a href="http://en.wikipedia.org/wiki/FastCGI"&gt;FastCGI&lt;/a&gt;. Se por um lado, isso diminui as opções para se desenvolver com pascal, por outro lado, ganha-se todas as vantagens de se utilizar programas compilados nativamente (velocidade, consumo de memória, verificação de tipos à compilação).&lt;br /&gt;&lt;br /&gt;O FreePascal fornece quatro ambientes de desenvolvimento para CGI (fpWeb, &lt;a href="http://motaz.freevar.com/freespider.htm"&gt;FreeSpider&lt;/a&gt;, &lt;a href="http://z505.com/powtils/idx.shtml"&gt;Powtils&lt;/a&gt; e &lt;a href="http://code.google.com/p/extpascal/"&gt;ExtPascal&lt;/a&gt;). Para saber o que pode-se esperar de cada ambiente eu resolvi fazer um pequeno programa com o fpWeb e o FreeSpider. Não utilizarei o ExtPascal por ser específico para o &lt;a href="http://www.sencha.com/products/js/"&gt;ExtJS&lt;/a&gt; e o Powtils por ser código procedural e (aparentemente) com pouco desenvolvimento. Nas próximas postagens colocarei as minhas observações sobre cada ambiente.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-7039531530440955221?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0VeISQkQJ871xBVWimwR4chJKls/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0VeISQkQJ871xBVWimwR4chJKls/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0VeISQkQJ871xBVWimwR4chJKls/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0VeISQkQJ871xBVWimwR4chJKls/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=pIgerVTo2oM:BPiQeEoYAu8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=pIgerVTo2oM:BPiQeEoYAu8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=pIgerVTo2oM:BPiQeEoYAu8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=pIgerVTo2oM:BPiQeEoYAu8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=pIgerVTo2oM:BPiQeEoYAu8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=pIgerVTo2oM:BPiQeEoYAu8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=pIgerVTo2oM:BPiQeEoYAu8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=pIgerVTo2oM:BPiQeEoYAu8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=pIgerVTo2oM:BPiQeEoYAu8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=pIgerVTo2oM:BPiQeEoYAu8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=pIgerVTo2oM:BPiQeEoYAu8:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=pIgerVTo2oM:BPiQeEoYAu8:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=pIgerVTo2oM:BPiQeEoYAu8:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=pIgerVTo2oM:BPiQeEoYAu8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=pIgerVTo2oM:BPiQeEoYAu8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=pIgerVTo2oM:BPiQeEoYAu8:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/pIgerVTo2oM" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2010-07-02T17:17:58.828-03:00</atom:updated><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2010/06/criando-um-aplicativo-cgi-com.html</feedburner:origLink></item><item><title>Capitalização de texto codificado em UTF-8</title><link>http://feedproxy.google.com/~r/silvioprog/~3/iucoJadxMPQ/capitalizacao-de-texto-codificado-em.html</link><category>Lazarus</category><author>noreply@blogger.com (Luiz Américo)</author><pubDate>Wed, 02 Jun 2010 14:18:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-3014236373654254011</guid><description>Sempre que surge um problema que as rotinas padrão do ambiente de desenvolvimento (no caso Freepascal/Lazarus) não conseguem resolver, a tendência do programador é criar uma solução caseira e comigo não é diferente. &lt;br&gt;&lt;br /&gt;Na maioria dos meus projetos acabo criando rotinas auxiliares, muitas destas, específicas para o projeto. Entretanto outras são genéricas e acabam sendo necessárias em outros programas. No início, seguindo as diretrizes &lt;a href="http://silvioclecio.blogspot.com/2009/10/pog-programacao-orientada-gambiarras.html"&gt;POG&lt;/a&gt;, eu copiava as rotinas de um projeto para outro até que recentemente decidi colocar um pouco de ordem no caos.&lt;br&gt;&lt;br /&gt;Uma das funções que não encontrei no FreePascal, e que precisei em &lt;a href="http://blog.silvioprog.com.br/2010/03/utilizando-web-services-soap-no-lazarus.html"&gt;um dos meus programas&lt;/a&gt;, foi para capitalizar (primeira letra maiúscula, o resto minúscula) um texto. Na realidade até existe (AnsiProperCase na unit StrUtils) porém para funcionar com strings unicode/UTF-8 é preciso fazer contorcionismo:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  TextoCapitalizado := UTF8Encode(AnsiProperCase(UTF8Decode(TextoEmUTF8)));&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Trocando em miúdos: a variável TextoEmUTF8 é convertida em uma string codificada em UTF-16 (WideString) que implicitamente é convertida em uma string temporária codificada no código de página ansi do sistema a qual é passada à função AnsiProperCase. Esta função retorna uma string codificada no código de página ansi do sistema que é implicitamente convertida em uma string codificada em UTF-16 (WideString) a qual, finalmente é convertida em UTF-8.&lt;br&gt;&lt;br /&gt;Código claro é isso aí!&lt;br&gt;&lt;br /&gt;Além do problema da falta de simplicidade desta abordagem, tecnicamente é possível ter corrupção de dados, visto que a conversão de UTF-16 &lt;&gt; Ansi não é 1 para 1 em todos casos.&lt;br&gt;&lt;br /&gt;Para solucionar o problema criei uma rotina (Capitalize) que utiliza dados em UTF-16/UTF-8 garantindo uma conversão exata e sem malabarismo. De quebra remove o excesso de espaços e existe a possibilidade de se excluir a capitalização de algumas palavras como por exemplo (de, da, o). Para ser utilizada em vários projetos coloquei em um pacote do lazarus o qual pode ser encontrada &lt;a href="http://code.google.com/p/luipack/source/browse/trunk/luicomponents/luistrutils.pas"&gt;aqui&lt;/a&gt;.&lt;br&gt;&lt;br /&gt;Algumas notas para quem tiver interesse em usar a função:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Não é otimizada para velocidade&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Pode ser usada sem instalar o pacote (luicomponents)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A versão para UTF-8 utiliza a versão UTF-16. Talvez, no futuro seja implementada uma versão específica para UTF-8&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Talvez acrescente as opções encontradas nesta &lt;a href="http://search.cpan.org/~doom/Text-Capitalize-1.3/lib/Text/Capitalize.pm"&gt;função&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A interface pode mudar a qualquer momento&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A função, como todo o código presente no meu repositório, pode ser usar em projeto comercial, porém agradeceria uma menção no programa&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-3014236373654254011?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VnU_DjRkICz1qQPYJCCJepd34XI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VnU_DjRkICz1qQPYJCCJepd34XI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VnU_DjRkICz1qQPYJCCJepd34XI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VnU_DjRkICz1qQPYJCCJepd34XI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=iucoJadxMPQ:DQ5pgM0no2c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=iucoJadxMPQ:DQ5pgM0no2c:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=iucoJadxMPQ:DQ5pgM0no2c:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=iucoJadxMPQ:DQ5pgM0no2c:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=iucoJadxMPQ:DQ5pgM0no2c:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=iucoJadxMPQ:DQ5pgM0no2c:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=iucoJadxMPQ:DQ5pgM0no2c:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=iucoJadxMPQ:DQ5pgM0no2c:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=iucoJadxMPQ:DQ5pgM0no2c:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=iucoJadxMPQ:DQ5pgM0no2c:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=iucoJadxMPQ:DQ5pgM0no2c:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=iucoJadxMPQ:DQ5pgM0no2c:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=iucoJadxMPQ:DQ5pgM0no2c:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=iucoJadxMPQ:DQ5pgM0no2c:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=iucoJadxMPQ:DQ5pgM0no2c:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=iucoJadxMPQ:DQ5pgM0no2c:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/iucoJadxMPQ" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2010-06-02T20:41:21.490-03:00</atom:updated><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2010/06/capitalizacao-de-texto-codificado-em.html</feedburner:origLink></item><item><title>Temas em aplicativos Lazarus com GTK</title><link>http://feedproxy.google.com/~r/silvioprog/~3/F8_u5z60puw/temas-em-aplicativos-lazarus-com-gtk.html</link><category>Lazarus</category><category>Skins</category><category>Dicas</category><author>silvioprog@gmail.com (Silvio Clécio • Blog)</author><pubDate>Fri, 14 May 2010 02:34:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-8795119749878100894</guid><description>Olá,&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
Sabemos que para aplicar um tema em um software sob o &lt;i&gt;widget&lt;/i&gt; &lt;i&gt;GTK2&lt;/i&gt;, basta apenas informar ao &lt;i&gt;motor&lt;/i&gt; onde esta o arquivo de configuração do tema –&amp;nbsp;gtkrc –&amp;nbsp;e o executável do aplicativo a ser &lt;i&gt;"embelezado"&lt;/i&gt;, para aplicar em um aplicativo no &lt;i&gt;Linux&lt;/i&gt;, seria basicamente assim:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #741b47;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;$ GTK2_RC_FILES='/ShinyBlack/gtk-2.0/gtkrc' rhythmbox&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
Sendo que &lt;i&gt;"ShinyBlack"&lt;/i&gt; é a pasta e nome do meu tema, e &lt;i&gt;"rhythmbox"&lt;/i&gt; o executável do &lt;i&gt;Rhythmbox&lt;/i&gt;, veja a foto dele com tema abaixo, e logo depois sem o tema:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_l1WyqtcRhYE/S-0UW6jJg3I/AAAAAAAABvw/j0j5usdNSnw/s1600/rhythmbox-com-tema.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="310" src="http://1.bp.blogspot.com/_l1WyqtcRhYE/S-0UW6jJg3I/AAAAAAAABvw/j0j5usdNSnw/s400/rhythmbox-com-tema.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Sem tema:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_l1WyqtcRhYE/S-0Ud6ARy9I/AAAAAAAABv0/nw7e366JsuQ/s1600/rhythmbox-sem-tema.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="310" src="http://4.bp.blogspot.com/_l1WyqtcRhYE/S-0Ud6ARy9I/AAAAAAAABv0/nw7e366JsuQ/s400/rhythmbox-sem-tema.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;Legal heim? E que tal isso no seu aplicativo escrito com &lt;i&gt;Lazarus&lt;/i&gt;? É isso que quero te mostrar.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Eu verifiquei algumas dicas no &lt;i&gt;wiki&lt;/i&gt; do &lt;i&gt;Lazarus&lt;/i&gt;, mas não consegui aplicar conforme estão lá. Também tentei uma que encontrei no fórum do &lt;i&gt;Lazarus&lt;/i&gt;, mas sem sucesso. Após algum tempo tentando consegui resolver &lt;i&gt;"a minha moda"&lt;/i&gt;, e foi basicamente assim:&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: black;"&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;procedure&lt;/span&gt; TForm1&lt;span style="color: #808030;"&gt;.&lt;/span&gt;FormCreate&lt;span style="color: #808030;"&gt;(&lt;/span&gt;Sender&lt;span style="color: #808030;"&gt;:&lt;/span&gt; TObject&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;
&lt;span style="color: maroon; font-weight: bold;"&gt;begin&lt;/span&gt;
  gtk_rc_parse&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #bb7977;"&gt;PChar&lt;/span&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;ExtractFilePath&lt;span style="color: #808030;"&gt;(&lt;/span&gt;ParamStr&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #008c00;"&gt;0&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: #808030;"&gt;+&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;'gtkrc'&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;
  gtk_rc_reparse_all&lt;span style="color: purple;"&gt;;&lt;/span&gt;
&lt;span style="color: maroon; font-weight: bold;"&gt;end&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
Veja o resultado abaixo:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_l1WyqtcRhYE/S-0U7mZAq8I/AAAAAAAABv4/1tPDsAM-dk4/s1600/tema-gtk2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="237" src="http://3.bp.blogspot.com/_l1WyqtcRhYE/S-0U7mZAq8I/AAAAAAAABv4/1tPDsAM-dk4/s400/tema-gtk2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Note que meu tema &lt;i&gt;default&lt;/i&gt; é preto com laranja, e o que apliquei no aplicativo é preto com azul.&lt;/div&gt;&lt;div&gt;Alguns componentes poderão não receber o tema, mas isso vai variar de onde você &lt;i&gt;pegue&lt;/i&gt; o tema, eu costumo &lt;i&gt;pegar&lt;/i&gt; em:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href="http://art.gnome.org/themes/gtk2"&gt;art.gnome.org/themes/gtk2&lt;/a&gt;&amp;nbsp;(com diversas amostras)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Para que a dica fique mais clara para você, baixe os fontes de um exemplo em:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.silvioprog.com.br/downloads/LazarusGTK2Theme.zip"&gt;www.silvioprog.com.br/downloads/LazarusGTK2Theme.zip&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Lembre-se que são temas para aplicativos que estão sob o&amp;nbsp;&lt;i&gt;widget&lt;/i&gt;&amp;nbsp;&lt;i&gt;GTK2&lt;/i&gt;, independente de estarem em &lt;i&gt;Linux&lt;/i&gt; ou &lt;i&gt;Windows&lt;/i&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Agora seus aplicativos não terão a "cara" padrão do SO, divirta-se :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href="http://silvioclecio.blogspot.com/"&gt;Silvio Clécio&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-8795119749878100894?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mt9VlHDiETBEbE3gkVWR-Bd06DU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mt9VlHDiETBEbE3gkVWR-Bd06DU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mt9VlHDiETBEbE3gkVWR-Bd06DU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mt9VlHDiETBEbE3gkVWR-Bd06DU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=F8_u5z60puw:ECeIlyYzzAU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=F8_u5z60puw:ECeIlyYzzAU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=F8_u5z60puw:ECeIlyYzzAU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=F8_u5z60puw:ECeIlyYzzAU:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=F8_u5z60puw:ECeIlyYzzAU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=F8_u5z60puw:ECeIlyYzzAU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=F8_u5z60puw:ECeIlyYzzAU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=F8_u5z60puw:ECeIlyYzzAU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=F8_u5z60puw:ECeIlyYzzAU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=F8_u5z60puw:ECeIlyYzzAU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=F8_u5z60puw:ECeIlyYzzAU:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=F8_u5z60puw:ECeIlyYzzAU:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=F8_u5z60puw:ECeIlyYzzAU:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=F8_u5z60puw:ECeIlyYzzAU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=F8_u5z60puw:ECeIlyYzzAU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=F8_u5z60puw:ECeIlyYzzAU:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/F8_u5z60puw" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2010-07-18T21:44:30.852-03:00</atom:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_l1WyqtcRhYE/S-0UW6jJg3I/AAAAAAAABvw/j0j5usdNSnw/s72-c/rhythmbox-com-tema.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2010/05/temas-em-aplicativos-lazarus-com-gtk.html</feedburner:origLink></item><item><title>Junte-se ao nosso canal IRC sobre Lazarus!</title><link>http://feedproxy.google.com/~r/silvioprog/~3/KYVpTiAGv6k/junte-se-ao-nosso-canal-irc-sobre.html</link><category>lazarus-br</category><category>IRC</category><author>gsilvioprog@gmail.com (programmer ObjectPascal)</author><pubDate>Thu, 13 May 2010 11:31:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-4364267148925789890</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_95z3O3W55Lw/S-xFMjxvR2I/AAAAAAAAAko/NcM-vqlRlJo/s1600/lazarus-br-irc.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_95z3O3W55Lw/S-xFMjxvR2I/AAAAAAAAAko/NcM-vqlRlJo/s320/lazarus-br-irc.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;Olá,&lt;/div&gt;&lt;br /&gt;
Ontem inauguramos um canal &lt;i&gt;IRC&lt;/i&gt; sobre &lt;i&gt;Lazarus&lt;/i&gt; aqui no &lt;i&gt;Brasil&lt;/i&gt;, o canal chama-se &lt;b&gt;&lt;i&gt;#lazarus-br&lt;/i&gt;&lt;/b&gt;. Alguns caras como João Morais (&lt;i&gt;&lt;a href="http://br.pressobjects.org/"&gt;PressObjects&lt;/a&gt;&lt;/i&gt;), Daniel Simões (&lt;i&gt;&lt;a href="http://acbr.sourceforge.net/drupal/"&gt;ACBr&lt;/a&gt;&lt;/i&gt;), Luiz Américo (&lt;i&gt;&lt;a href="http://code.google.com/p/luipack/"&gt;LuiPack&lt;/a&gt;&lt;/i&gt;) e outros membros ativos no &lt;i&gt;Lazarus&lt;/i&gt; já apareceram lá. Só esta faltando você!&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;div&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #444444;"&gt;&amp;nbsp;Perguntas&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
Você nunca usou um &lt;i&gt;IRC&lt;/i&gt; antes? Não conhece um software para acessar e conversar com o pessoal? Não se preocupe, eu também não conhecia, aprendi tudo ontem e venho compartilhar com você com o maior prazer. :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #444444;"&gt;&amp;nbsp;Soluções Open Source&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Se você usa &lt;i&gt;Linux&lt;/i&gt;, use o &lt;i&gt;XChat&lt;/i&gt;:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #741b47;"&gt;&amp;nbsp;$ sudo apt-get install xchat&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
Se você usa &lt;i&gt;Windows&lt;/i&gt;, tem uma versão para ele aqui:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;a href="http://www.silverex.org/download/xchat-2.8.6-2.exe"&gt;http://www.silverex.org/download/xchat-2.8.6-2.exe&lt;/a&gt; (&lt;a href="http://www.silverex.org/download/"&gt;http://www.silverex.org/download/&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
Prossiga com a instalação, e ao abrir o software, preencha os dados que ele pedir. Eu escolhi &lt;i&gt;freenode&lt;/i&gt; e preenchi somente os dados básicos. De tão simples (mais fácil que acessar o &lt;i&gt;MSN&lt;/i&gt;), não será necessário fotos para ilustrar. Mas se mesmo assim você tiver dúvidas, eu te indico dois links, foi lá que aprendi:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;a href="http://wiki.ubuntu-br.org/UsandoIRC"&gt;http://wiki.ubuntu-br.org/UsandoIRC&lt;/a&gt;&amp;nbsp;(do básico ao intermediário)&lt;br /&gt;
&lt;a href="http://board.katsuro.com.br/index.php?page=Thread&amp;amp;threadID=106"&gt;http://board.katsuro.com.br/index.php?page=Thread&amp;amp;threadID=106&lt;/a&gt;&amp;nbsp;(vários comandos)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
Atualmente estou frequentando o nosso canal sobre &lt;i&gt;Lazarus&lt;/i&gt; – &lt;b&gt;&lt;i&gt;#lazarus-br&lt;/i&gt;&lt;/b&gt;), o canal do &lt;i&gt;Ubuntu&lt;/i&gt; aqui no Brasil –&amp;nbsp;&lt;i&gt;#ubuntu-br&lt;/i&gt;, e o canal do &lt;i&gt;Lazarus&lt;/i&gt; nos EUA – #lazarus-ide. Estou adorando estar em contato com a galera em tempo real. :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Esses canais são exclusivos para tirar dúvidas dos usuários, lá você terá grandes chances de resolver um problema em seu software, no caso dos canais que citei, dúvidas sobre &lt;i&gt;Lazarus&lt;/i&gt; e &lt;i&gt;Ubuntu&lt;/i&gt;. Procure mais canais na web sobre outros tópicos, existem milhares e estão ativos aí a um bom tempo.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Vai lá e acessa, qualquer dúvida fique a vontade para perguntar aqui nos comentários.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Boa sorte!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;a href="http://silvioclecio.blogspot.com/"&gt;Silvio Clécio&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-4364267148925789890?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OFDorjiw7lWBQzJ_cUInoJi-10E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OFDorjiw7lWBQzJ_cUInoJi-10E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OFDorjiw7lWBQzJ_cUInoJi-10E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OFDorjiw7lWBQzJ_cUInoJi-10E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=KYVpTiAGv6k:48VDz7dO1bQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=KYVpTiAGv6k:48VDz7dO1bQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=KYVpTiAGv6k:48VDz7dO1bQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=KYVpTiAGv6k:48VDz7dO1bQ:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=KYVpTiAGv6k:48VDz7dO1bQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=KYVpTiAGv6k:48VDz7dO1bQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=KYVpTiAGv6k:48VDz7dO1bQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=KYVpTiAGv6k:48VDz7dO1bQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=KYVpTiAGv6k:48VDz7dO1bQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=KYVpTiAGv6k:48VDz7dO1bQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=KYVpTiAGv6k:48VDz7dO1bQ:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=KYVpTiAGv6k:48VDz7dO1bQ:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=KYVpTiAGv6k:48VDz7dO1bQ:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=KYVpTiAGv6k:48VDz7dO1bQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=KYVpTiAGv6k:48VDz7dO1bQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=KYVpTiAGv6k:48VDz7dO1bQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/KYVpTiAGv6k" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2010-05-13T15:31:34.497-03:00</atom:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_95z3O3W55Lw/S-xFMjxvR2I/AAAAAAAAAko/NcM-vqlRlJo/s72-c/lazarus-br-irc.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">9</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2010/05/junte-se-ao-nosso-canal-irc-sobre.html</feedburner:origLink></item><item><title>Instalando o Lazarus no Lucid ou Maverick pelo SVN</title><link>http://feedproxy.google.com/~r/silvioprog/~3/025E3rR4F6I/instalando-o-lazarus-no-lucid-pelo-svn.html</link><category>Linux</category><category>Lazarus</category><category>Artigos</category><category>SVN</category><author>gsilvioprog@gmail.com (programmer ObjectPascal)</author><pubDate>Fri, 07 May 2010 14:28:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-1004653950596066224</guid><description>&lt;i&gt;Neste artigo vamos instalar no Lucid (ou Maverick) o Free Pascal 2.4.0-2, e a versão SVN do Lazarus. Vamos lá, temos muito trabalho a fazer!&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #444444;"&gt;&lt;i&gt;&amp;nbsp;Abrindo o Synaptic e instalando o Free Pascal 2.4.0-2&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Primeiro, vá ao menu &lt;i&gt;Sistema | Administração&lt;/i&gt; &amp;nbsp;e abra o &lt;i&gt;Gerenciador de pacotes Synaptic&lt;/i&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_95z3O3W55Lw/S-R1DWXglyI/AAAAAAAAAjQ/gyjV9yEQHRc/s1600/1-menu+synaptic.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="268" src="http://4.bp.blogspot.com/_95z3O3W55Lw/S-R1DWXglyI/AAAAAAAAAjQ/gyjV9yEQHRc/s400/1-menu+synaptic.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Feito isso, busque por &lt;i&gt;"fpc"&lt;/i&gt;&amp;nbsp;(sem aspas):&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_95z3O3W55Lw/S-R1RxZDkmI/AAAAAAAAAjY/kxmc93SNi6I/s1600/2-marcando+fpc+no+synaptic.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="307" src="http://1.bp.blogspot.com/_95z3O3W55Lw/S-R1RxZDkmI/AAAAAAAAAjY/kxmc93SNi6I/s400/2-marcando+fpc+no+synaptic.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Observe com muita atenção as opções que marquei, se você esquecer uma delas o &lt;i&gt;Lazarus&lt;/i&gt; não irá funcionar corretamente. As opções marcadas foram:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;fpc&lt;/li&gt;
&lt;li&gt;fp-utils&lt;/li&gt;
&lt;li&gt;fpc-source&lt;/li&gt;
&lt;li&gt;fp-units-misc&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Todas referentes a versão &lt;i&gt;2.4.0-2&lt;/i&gt; do &lt;i&gt;Free Pascal&lt;/i&gt;. A instalação poderá levar alguns minutos, espere até concluir:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_95z3O3W55Lw/S-R1fB5eH4I/AAAAAAAAAjg/b-wOs02Vqr4/s1600/3-download+do+fpc.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_95z3O3W55Lw/S-R1fB5eH4I/AAAAAAAAAjg/b-wOs02Vqr4/s320/3-download+do+fpc.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Após a conclusão da janela mostrada na figura acima o &lt;i&gt;Free Pascal&lt;/i&gt;&amp;nbsp;estará instalado, para testá-lo, abra o terminal e digite:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #741b47;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;$ fpc&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Ele irá exibir algumas informações, use &lt;i&gt;Enter&lt;/i&gt; até concluir.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #444444;"&gt;&amp;nbsp;Instalando o Subversion e baixando os fontes do Lazarus por ele&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Caso você não tenha instalado o &lt;i&gt;Subversion&lt;/i&gt; em seu &lt;i&gt;Lucid&lt;/i&gt;, use o comando abaixo:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #741b47;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;$ sudo apt-get install subversion&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Após isso, escolha algum diretório para salvar os fontes do &lt;i&gt;Lazarus&lt;/i&gt;, lembrando que o mesmo deverá ter as devidas permissões. No meu caso, escolhi &lt;i&gt;“/home/silvioprog”&lt;/i&gt; (meu $HOME):&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #741b47;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;$ cd '/home/silvioprog'&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
E logo depois :&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #741b47;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;$ svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Você receberá várias linhas em seu terminal, conforme mostra a imagem a seguir:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_95z3O3W55Lw/S-R1tVawdHI/AAAAAAAAAjo/_VKv6M2tjGo/s1600/4-baixando+fontes+do+lazarus.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="286" src="http://4.bp.blogspot.com/_95z3O3W55Lw/S-R1tVawdHI/AAAAAAAAAjo/_VKv6M2tjGo/s400/4-baixando+fontes+do+lazarus.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
O &lt;i&gt;download&lt;/i&gt; levará algum tempo, enquanto isso você poderá minimizar o terminal e acessar outros artigos aqui do blog ;-)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #444444;"&gt;&amp;nbsp;Rodando o comando Make&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Entre no diretório:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #741b47;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;$ cd /home/SEU_USERNAME/lazarus&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
E rode o comando &lt;i&gt;make&lt;/i&gt;, esperando sua total conclusão, pois serão muitas linhas a serem processadas:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #741b47;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;$ make clean all&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_95z3O3W55Lw/S-R2lEAm-hI/AAAAAAAAAjw/ZgFYgYUNwJc/s1600/5-make.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="286" src="http://1.bp.blogspot.com/_95z3O3W55Lw/S-R2lEAm-hI/AAAAAAAAAjw/ZgFYgYUNwJc/s400/5-make.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Veja os binários construídos na imagem a seguir:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_95z3O3W55Lw/S-R22d27gvI/AAAAAAAAAj4/wfeQkIaJZpo/s1600/6-binarios+constru%C3%ADdos.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="292" src="http://3.bp.blogspot.com/_95z3O3W55Lw/S-R22d27gvI/AAAAAAAAAj4/wfeQkIaJZpo/s400/6-binarios+constru%C3%ADdos.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Concluindo essa etapa com êxito, seu &lt;i&gt;Lazarus&lt;/i&gt; estará pronto para o abate. :-)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #444444;"&gt;&amp;nbsp;Criando o menu para abrir o Lazarus&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Você não vai querer ir sempre no diretório e dar duplo clique no binário para abrir o &lt;i&gt;Lazarus&lt;/i&gt;, não? Vá ao menu &lt;i&gt;Sistema | Preferências&lt;/i&gt; e escolha &lt;i&gt;Menu principal&lt;/i&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_95z3O3W55Lw/S-R3D1pbTAI/AAAAAAAAAkA/jAnIgOWhqt4/s1600/7-abrindo+riador+de+menus.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="271" src="http://1.bp.blogspot.com/_95z3O3W55Lw/S-R3D1pbTAI/AAAAAAAAAkA/jAnIgOWhqt4/s400/7-abrindo+riador+de+menus.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Escolha &lt;i&gt;Desenvolvimento&lt;/i&gt;, clique em &lt;i&gt;Novo item&lt;/i&gt;, e preencha as propriedades:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_95z3O3W55Lw/S-R3OEDw34I/AAAAAAAAAkI/Jwqpren1Eb0/s1600/8-criando+o+%C3%ADcone+no+menu.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="332" src="http://3.bp.blogspot.com/_95z3O3W55Lw/S-R3OEDw34I/AAAAAAAAAkI/Jwqpren1Eb0/s400/8-criando+o+%C3%ADcone+no+menu.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
As opções são:&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;b&gt;Tipo:&lt;/b&gt; Aplicativo&lt;br /&gt;
&lt;b&gt;Nome:&lt;/b&gt; Lazarus&lt;br /&gt;
&lt;b&gt;Comando:&lt;/b&gt; startlazarus&lt;br /&gt;
&lt;b&gt;Comentário:&lt;/b&gt; Lazarus IDE&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
Clique no botão onde aponta o cursor na imagem acima, e localize aquele ícone em &lt;i&gt;“/home/SEU_USERNAME/lazarus/images/ide_icon48x48.png”&lt;/i&gt;. Após clicar em &lt;i&gt;OK&lt;/i&gt; e &lt;i&gt;Fechar&lt;/i&gt;, crie os seguintes links:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #741b47;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;$ sudo ln -s '/home/SEU_USERNAME/lazarus/startlazarus' /usr/bin/startlazarus&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #741b47;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;$ sudo ln -s '/home/SEU_USERNAME/lazarus/lazarus' /usr/bin/lazarus&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Agora use o novo menu criado e abra o &lt;i&gt;Lazarus&lt;/i&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_95z3O3W55Lw/S-R3bRHdUCI/AAAAAAAAAkQ/W0bFJ6doXro/s1600/9-menu+criado.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="308" src="http://1.bp.blogspot.com/_95z3O3W55Lw/S-R3bRHdUCI/AAAAAAAAAkQ/W0bFJ6doXro/s400/9-menu+criado.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Se ao abrir o &lt;i&gt;Lazarus&lt;/i&gt; ele não exibir nenhuma mensagem e conseguir compilar o &lt;i&gt;Form&lt;/i&gt; aberto, pule para a &lt;b&gt;conclusão&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #444444;"&gt;&amp;nbsp;Configurando o caminho dos fontes do Free Pascal no Lazarus&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Provavelmente ao abrir o &lt;i&gt;Lazarus&lt;/i&gt; você receberá a seguinte mensagem:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_95z3O3W55Lw/S-R3jaPv1AI/AAAAAAAAAkY/PnjdXcnjeJU/s1600/10-aviso+dos+fontes+do+fpc.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="171" src="http://3.bp.blogspot.com/_95z3O3W55Lw/S-R3jaPv1AI/AAAAAAAAAkY/PnjdXcnjeJU/s400/10-aviso+dos+fontes+do+fpc.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Não se assuste, foi apenas o &lt;i&gt;Lazarus&lt;/i&gt; que não conseguiu encontrar os fontes do &lt;i&gt;Free Pascal&lt;/i&gt;. Para resolver isso, vá ao menu do &lt;i&gt;Lazarus&lt;/i&gt;, &lt;i&gt;Environment | Options …&lt;/i&gt;, e configure conforme a imagem abaixo:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_l1WyqtcRhYE/TLoDp_jCMVI/AAAAAAAAB8A/Fl-ryPw6HCo/s1600/11-informando+o+caminho+dos+fontes.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="304" src="http://3.bp.blogspot.com/_l1WyqtcRhYE/TLoDp_jCMVI/AAAAAAAAB8A/Fl-ryPw6HCo/s400/11-informando+o+caminho+dos+fontes.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Em &lt;i&gt;FPC source directory&lt;/i&gt; informe:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #0b5394;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;/usr/share/fpcsrc/$(FPCVer)/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Clique &lt;i&gt;OK&lt;/i&gt;, e finalmente o seu &lt;i&gt;Lazarus&lt;/i&gt; está pronto para o abate!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #444444;"&gt;&amp;nbsp;Conclusão&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Algumas pessoas “temem” acompanhar projetos pelo &lt;i&gt;SVN&lt;/i&gt;, devido as constantes mudanças nos fontes dos mesmos. Mas no caso do &lt;i&gt;Lazarus&lt;/i&gt;, você poderá acompanhar novos recursos em tempo real, uma vez que as liberações finais dele demoram um pouco para sair (note que ainda estamos na &lt;i&gt;beta&lt;/i&gt;), e o principal – Você poderá colaborar com o desenvolvimento &lt;a href="http://bugs.freepascal.org/"&gt;informando bugs&lt;/a&gt;.&lt;br /&gt;
Eu acompanho e recomendo, pois estou usando novos recursos que não tem em versões anteriores, como por exemplo a função &lt;a href="http://wiki.lazarus.freepascal.org/Lazarus_0.9.30_release_notes#LCL_Changes"&gt;&lt;i&gt;OpenURL&lt;/i&gt; da &lt;i&gt;Unit&lt;/i&gt; &lt;i&gt;LCLIntf&lt;/i&gt;&lt;/a&gt;, que serve para abrir um &lt;i&gt;HTML&lt;/i&gt; local ou página da web no browser corrente.&lt;br /&gt;
&lt;br /&gt;
É isso, abraços, e até a próxima!&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://silvioclecio.blogspot.com/"&gt;Silvio Clécio&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #cc0000;"&gt;&amp;nbsp;Artigo editado em 16/10/2010&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-1004653950596066224?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FdPvP-4sYR3SjX67qIHORE5waV0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FdPvP-4sYR3SjX67qIHORE5waV0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FdPvP-4sYR3SjX67qIHORE5waV0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FdPvP-4sYR3SjX67qIHORE5waV0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=025E3rR4F6I:hezq7CCnnW0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=025E3rR4F6I:hezq7CCnnW0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=025E3rR4F6I:hezq7CCnnW0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=025E3rR4F6I:hezq7CCnnW0:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=025E3rR4F6I:hezq7CCnnW0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=025E3rR4F6I:hezq7CCnnW0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=025E3rR4F6I:hezq7CCnnW0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=025E3rR4F6I:hezq7CCnnW0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=025E3rR4F6I:hezq7CCnnW0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=025E3rR4F6I:hezq7CCnnW0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=025E3rR4F6I:hezq7CCnnW0:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=025E3rR4F6I:hezq7CCnnW0:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=025E3rR4F6I:hezq7CCnnW0:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=025E3rR4F6I:hezq7CCnnW0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=025E3rR4F6I:hezq7CCnnW0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=025E3rR4F6I:hezq7CCnnW0:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/025E3rR4F6I" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2010-10-16T17:20:43.964-03:00</atom:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_95z3O3W55Lw/S-R1DWXglyI/AAAAAAAAAjQ/gyjV9yEQHRc/s72-c/1-menu+synaptic.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">12</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2010/05/instalando-o-lazarus-no-lucid-pelo-svn.html</feedburner:origLink></item><item><title>Lazarus e BASS, executar áudio no Lazarus em Linux e Windows</title><link>http://feedproxy.google.com/~r/silvioprog/~3/rvnulXUGGUE/lazarus-e-bass-executar-audio-no.html</link><category>Audio</category><category>Lazarus</category><category>Novidades</category><category>Dicas</category><category>Exemplos</category><author>gsilvioprog@gmail.com (programmer ObjectPascal)</author><pubDate>Sun, 28 Mar 2010 17:53:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-6129174915405361404</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_95z3O3W55Lw/S6_25L1aqfI/AAAAAAAAAjA/vbfZiv-aT7s/s1600/lazarus-bass.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="62" src="http://4.bp.blogspot.com/_95z3O3W55Lw/S6_25L1aqfI/AAAAAAAAAjA/vbfZiv-aT7s/s200/lazarus-bass.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Agora é possível executar áudio com &lt;i&gt;Lazarus&lt;/i&gt; no &lt;i&gt;Linux&lt;/i&gt; e &lt;i&gt;Windows&lt;/i&gt; \o/. Tudo graças e um único arquivo para o determinado &lt;i&gt;S.O&lt;/i&gt;, para &lt;i&gt;Linux&lt;/i&gt; uma &lt;i&gt;Lib&lt;/i&gt;, para &lt;i&gt;Windows&lt;/i&gt; uma &lt;i&gt;DLL&lt;/i&gt;, respectivamente &lt;i&gt;libbass.so&lt;/i&gt; e &lt;i&gt;bass.dll&lt;/i&gt;, lembrando que não é necessário a instalação ou registro desses arquivos, basta que estejam na mesma pasta do executável do seu aplicativo. Não é simples?&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #444444;"&gt;&amp;nbsp;Testando:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
Encontrei um exemplo no &lt;a href="http://www.un4seen.com/"&gt;site do fabricante&lt;/a&gt;, bem prático, e foi escrito para ser compilado no &lt;i&gt;Lazarus&lt;/i&gt;&amp;nbsp;em &lt;i&gt;Linux&lt;/i&gt; e &lt;i&gt;Windows&lt;/i&gt;. Compilei aqui em meu &lt;i&gt;Ubuntu&lt;/i&gt;; Explico como abrir um arquivo &lt;i&gt;mp3&lt;/i&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Clique em &lt;i&gt;Add&lt;/i&gt;;&lt;/li&gt;
&lt;li&gt;Selecione o arquivo na lista;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Play&lt;/i&gt;;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Veja o exemplo em ação na imagem abaixo:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_95z3O3W55Lw/S6_4YfzGh9I/AAAAAAAAAjI/lUQLVY08-GY/s1600/lazarus-bass-player.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="181" src="http://1.bp.blogspot.com/_95z3O3W55Lw/S6_4YfzGh9I/AAAAAAAAAjI/lUQLVY08-GY/s400/lazarus-bass-player.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
No exemplo o autor mostrou como usar os recursos básicos como &lt;i&gt;play&lt;/i&gt;, &lt;i&gt;stop&lt;/i&gt; e etc., e também a medição de consumo da &lt;i&gt;CPU&lt;/i&gt;, mas deixo aqui o recado que a biblioteca &lt;i&gt;bass&lt;/i&gt; processa efeitos sonoros, como eco, reverb, delay, flanger, chorus, phaser, tremulo, sampler e muito mais, acesse o &lt;a href="http://www.un4seen.com/"&gt;site da biblioteca&lt;/a&gt; e veja diversos exemplos. A biblioteca é free para uso não comercial, veja mais detalhes sobre licenças na home page deles.&lt;br /&gt;
&lt;div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;O exemplo completo pode ser baixado &lt;a href="http://www.silvioprog.com.br/downloads/Lazarus_BASS.zip"&gt;aqui&lt;/a&gt;, divirta-se :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href="http://silvioclecio.blogspot.com/"&gt;Silvio Clécio&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-6129174915405361404?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/W3j4QXo8X4LXQ2nRTgDGdtvWc80/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W3j4QXo8X4LXQ2nRTgDGdtvWc80/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/W3j4QXo8X4LXQ2nRTgDGdtvWc80/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W3j4QXo8X4LXQ2nRTgDGdtvWc80/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rvnulXUGGUE:Do2mDf3SrkY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rvnulXUGGUE:Do2mDf3SrkY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rvnulXUGGUE:Do2mDf3SrkY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rvnulXUGGUE:Do2mDf3SrkY:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rvnulXUGGUE:Do2mDf3SrkY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=rvnulXUGGUE:Do2mDf3SrkY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rvnulXUGGUE:Do2mDf3SrkY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rvnulXUGGUE:Do2mDf3SrkY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=rvnulXUGGUE:Do2mDf3SrkY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rvnulXUGGUE:Do2mDf3SrkY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rvnulXUGGUE:Do2mDf3SrkY:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=rvnulXUGGUE:Do2mDf3SrkY:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rvnulXUGGUE:Do2mDf3SrkY:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rvnulXUGGUE:Do2mDf3SrkY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=rvnulXUGGUE:Do2mDf3SrkY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rvnulXUGGUE:Do2mDf3SrkY:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/rvnulXUGGUE" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2010-07-19T00:12:00.820-03:00</atom:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_95z3O3W55Lw/S6_25L1aqfI/AAAAAAAAAjA/vbfZiv-aT7s/s72-c/lazarus-bass.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2010/03/lazarus-e-bass-executar-audio-no.html</feedburner:origLink></item><item><title>Form transparente no Lazarus</title><link>http://feedproxy.google.com/~r/silvioprog/~3/1h0mXXOFDFM/form-transparente-no-lazarus.html</link><category>Lazarus</category><category>LCL</category><category>Skins</category><category>Dicas</category><category>Exemplos</category><author>gsilvioprog@gmail.com (programmer ObjectPascal)</author><pubDate>Sat, 27 Mar 2010 19:44:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-7695660432444105198</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_95z3O3W55Lw/S663B3isBGI/AAAAAAAAAi8/QyK0OkcOw-w/s1600-h/transparent-form-lazarus.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="266" src="http://4.bp.blogspot.com/_95z3O3W55Lw/S663B3isBGI/AAAAAAAAAi8/QyK0OkcOw-w/s400/transparent-form-lazarus.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Olá a todos,&lt;br /&gt;
&lt;br /&gt;
Ontem recebi um e-mail do membro &lt;i&gt;Elson Junio&lt;/i&gt;&amp;nbsp;(é&amp;nbsp;&lt;i&gt;Junio&lt;/i&gt;&amp;nbsp;mesmo&amp;nbsp;:-) ) de &lt;a href="http://groups.google.com.br/group/lazarus-br?hl=pt-BR&amp;amp;lnk="&gt;nosso grupo sobre &lt;i&gt;Lazarus&lt;/i&gt; no &lt;i&gt;Google&lt;/i&gt;&lt;/a&gt;, ele me mostrou a possibilidade de criar &lt;i&gt;Forms&lt;/i&gt; transparentes no &lt;i&gt;Linux/GTK2&lt;/i&gt;. Após uma boa lida na &lt;a href="http://library.gnome.org/devel/gtk/stable/GtkWidget.html#gtk-widget-shape-combine-mask"&gt;documentação do &lt;i&gt;GTK&lt;/i&gt;&lt;/a&gt; ele encontrou a função&amp;nbsp;&lt;i&gt;&lt;a href="http://library.gnome.org/devel/gtk/stable/GtkWidget.html#gtk-widget-shape-combine-mask"&gt;gtk_widget_shape_combine_mask&lt;/a&gt;&lt;/i&gt;, escreveu um pequeno exemplo mostrando como usar a função e me enviou. A função é &lt;b&gt;parecida&lt;/b&gt; com a &lt;i&gt;SetWindowRgn&lt;/i&gt; da &lt;i&gt;Unit&lt;/i&gt; &lt;i&gt;win32proc&lt;/i&gt;. Para que o exemplo ficasse completo, escrevi uma parte exclusiva para &lt;i&gt;Linux&lt;/i&gt; e&amp;nbsp;&lt;i&gt;Windows&lt;/i&gt; e disponibilizei em&amp;nbsp;&lt;a href="http://www.silvioprog.com.br/downloads/LazTransparentForm.zip"&gt;&lt;i&gt;http://www.silvioprog.com.br/downloads/LazTransparentForm.zip&lt;/i&gt;&lt;/a&gt;. Aproveitei um dos &lt;i&gt;skins&lt;/i&gt; &amp;nbsp;do &lt;a href="http://www.videolan.org/vlc/"&gt;&lt;i&gt;VLC&lt;/i&gt; &lt;i&gt;Media&lt;/i&gt; &lt;i&gt;Player&lt;/i&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Em ambos os &lt;i&gt;S.Os&lt;/i&gt; eu notei que ao mover o &lt;i&gt;Form&lt;/i&gt; rapidamente, ele era arremessado para fora da tela, mas resolvi adicionando um &lt;i&gt;Timer&lt;/i&gt; ao exemplo. No final consegui fazer o recurso funcionar&amp;nbsp;no &lt;i&gt;Linux&lt;/i&gt; e &lt;i&gt;Windows&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
Após abrir o exemplo vocês verão como é fácil criar &lt;i&gt;Forms&lt;/i&gt; transparentes no &lt;i&gt;Lazarus&lt;/i&gt;, seja em &lt;i&gt;Linux&lt;/i&gt; ou &lt;i&gt;Windows&lt;/i&gt;.&amp;nbsp;Simples assim :-)&lt;br /&gt;
&lt;br /&gt;
Até a próxima,&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://silvioclecio.blogspot.com/"&gt;Silvio Clécio&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-7695660432444105198?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9tWLsnNHDn2It9FfRYcVpej-GVg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9tWLsnNHDn2It9FfRYcVpej-GVg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9tWLsnNHDn2It9FfRYcVpej-GVg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9tWLsnNHDn2It9FfRYcVpej-GVg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1h0mXXOFDFM:065-YRB6xjI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1h0mXXOFDFM:065-YRB6xjI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1h0mXXOFDFM:065-YRB6xjI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1h0mXXOFDFM:065-YRB6xjI:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1h0mXXOFDFM:065-YRB6xjI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=1h0mXXOFDFM:065-YRB6xjI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1h0mXXOFDFM:065-YRB6xjI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1h0mXXOFDFM:065-YRB6xjI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=1h0mXXOFDFM:065-YRB6xjI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1h0mXXOFDFM:065-YRB6xjI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1h0mXXOFDFM:065-YRB6xjI:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=1h0mXXOFDFM:065-YRB6xjI:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1h0mXXOFDFM:065-YRB6xjI:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1h0mXXOFDFM:065-YRB6xjI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=1h0mXXOFDFM:065-YRB6xjI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1h0mXXOFDFM:065-YRB6xjI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/1h0mXXOFDFM" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2010-03-27T23:44:23.096-03:00</atom:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_95z3O3W55Lw/S663B3isBGI/AAAAAAAAAi8/QyK0OkcOw-w/s72-c/transparent-form-lazarus.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">6</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2010/03/form-transparente-no-lazarus.html</feedburner:origLink></item><item><title>Utilizando Web Services SOAP no Lazarus</title><link>http://feedproxy.google.com/~r/silvioprog/~3/1_-qYIvKhTo/utilizando-web-services-soap-no-lazarus.html</link><category>Lazarus</category><category>soap</category><category>Internet</category><category>webservices</category><author>noreply@blogger.com (Luiz Américo)</author><pubDate>Sun, 21 Mar 2010 14:42:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-117755688499851413</guid><description>&lt;span style="font-weight:bold;"&gt;Por Luiz Américo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Introdução&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Recentemente, foi me solicitado que um dos meus programas importasse os dados de outro sistema, o qual disponibiliza uma interface de "Web Services" baseado no protocolo SOAP. O sistema em questão é um aplicativo para gestão hospitalar desenvolvido com tecnologia .NET com uma interface web. Uma versão pública para testes encontra-se em &lt;a href="http://sah.saude.ba.gov.br/"&gt;http://sah.saude.ba.gov.br/&lt;/a&gt;. É possível entrar com o login "teste" e a senha "teste".&lt;br /&gt;&lt;br /&gt;Requerimentos para a implementação (testes realizados no windows):&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lazarus recente com fpc240&lt;/li&gt;&lt;li&gt;Web Services Toolkit (versão do svn: &lt;a href="https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/wst"&gt;https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/wst&lt;/a&gt;)&lt;/li&gt;&lt;li&gt; Synapse (&lt;a href="http://www.ararat.cz/synapse/"&gt;http://www.ararat.cz/synapse/&lt;/a&gt;)&lt;/li&gt;&lt;li&gt; Arquivo wsdl que deve ser baixado de &lt;a href="http://sah.saude.ba.gov.br/ws.asmx%20"&gt;http://sah.saude.ba.gov.br/ws.asmx &lt;/a&gt;(link Service Description)&lt;/li&gt;&lt;li&gt; * SoapUI (&lt;a href="http://www.soapui.org/"&gt;http://www.soapui.org/&lt;/a&gt;) - Opcional&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; 1° Passo: Testar o Web Service (Opcional)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Apesar de opcional este passo é muito importante para saber se o serviço está realmente funcionando e para, de antemão, conhecer o formato do pedido e da resposta.&lt;br /&gt;&lt;br /&gt;O melhor programa que eu encontrei foi o SoapUI, um programa Open Source bastante completo. Para configurá-lo não foi difícil. Apenas criei um projeto e defini a localização do arquivo WSDL (tudo com a configuração padrão). Após a criação do projeto aparecerá uma lista com todas as funções definidas pelo serviço. Cada função vem com um modelo de pedido (Request) pré-configurado que pode ser usado para testar o serviço. Abaixo tem uma tela do programa:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_vsnitvZr5Ps/S6aUl_jVSUI/AAAAAAAAAEw/QgwptuDt6Ek/s1600-h/soapui_small.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5451207779414264130" src="http://1.bp.blogspot.com/_vsnitvZr5Ps/S6aUl_jVSUI/AAAAAAAAAEw/QgwptuDt6Ek/s320/soapui_small.png" style="cursor: pointer; display: block; height: 210px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;Nesta tela, à esquerda, fica os dados do pedido. No caso é necessário colocar o número do CNES (Cadastro Nacional de Estabelecimentos de Saúde) que é "00000" no sistema de teste. Para executar o pedido pressione o botão com a seta verde.&lt;br /&gt;Após obter a resposta os dados aparecerão na tela à direita (mais sobre o formato da resposta adiante).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2° Passo: Instalar o pacote Web Services Toolkit (WST) junto com o Synapse&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para funcionar o WST precisa de um componente para se conectar ao servidor. Neste exemplo eu usei o Synapse.&lt;br /&gt;&lt;br /&gt;Na pasta ide/lazarus do WST encontra-se vários pacotes. Abra e instale os seguintes: wst_core, wst_design e wst_synapse. Provavelmente ao tentar compilar o wst_synapse aparecerá um erro. Para consertá-lo abra o pacote wst_synapse, vá em Compiler Options / Other Units e adicione a pasta onde se encontra os fontes do synapse, no meu caso: "D:\sources\Synapse\source\lib\"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3° Passo: Criar as classes que definem o serviço.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Após instalar o pacote WST e baixar o arquivo wsdl, vá em Project &amp;gt; Web Services Toolkit &amp;gt; Import WSDL file...&lt;br /&gt;&lt;br /&gt;Aparecerá a janela abaixo:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_vsnitvZr5Ps/S6aVRCisv9I/AAAAAAAAAE4/iOu4G09gzkM/s1600-h/import.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5451208518951288786" src="http://1.bp.blogspot.com/_vsnitvZr5Ps/S6aVRCisv9I/AAAAAAAAAE4/iOu4G09gzkM/s320/import.png" style="display: block; height: 320px; margin: 0px auto 10px; text-align: center; width: 295px;" /&gt;&lt;/a&gt;&lt;br /&gt;Defina a localização do arquivo WSDL e onde o código gerado será armazenado. Mantenha a configuração padrão (se desejar selecione "Add generated files to project"). Após o OK, dois arquivos serão criados: sah.pas e sah_proxy.pas. O primeiro contém classes que mapeiam as funções e tipos de dados definidos pelo Web Service. O segundo (sah_proxy.pas) implementa a interface do serviço, neste caso WSSoap.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4° Passo: Configurar o cabeçalho&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Este serviço necessita que se configure a propriedade SoapAction do cabeçalho Http para cada função a ser chamada.&lt;br /&gt;&lt;br /&gt;O WST utiliza meta dados que são definidos no procedimento Register_sah_ServiceMetadata. Para configurar a função ListarSetorInternamento, adicione o seguinte código:&lt;br /&gt;&lt;br /&gt;&lt;pre style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: rgb(255, 255, 255) none repeat scroll 0% 0%; color: black;"&gt;mm&lt;span style="color: #808030;"&gt;.&lt;/span&gt;SetOperationCustomData&lt;span style="color: #808030;"&gt;(&lt;/span&gt;sUNIT_NAME&lt;span style="color: #808030;"&gt;,&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;'WSSoap'&lt;/span&gt;&lt;span style="color: #808030;"&gt;,&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;'ListarSetorInternamento'&lt;/span&gt;&lt;span style="color: #808030;"&gt;,&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;'TRANSPORT_soapAction'&lt;/span&gt;&lt;span style="color: #808030;"&gt;,&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;'http://rsconsis.uni.cc/ListarSetorInternamento'&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;De onde veio esta informação? No arquivo WSDL procure por SoapAction e o nome da função desejada. No caso a parte do código relevante para ListarSetorInternamento é:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt; wsdl:operation name="ListarSetorInternamento"&amp;gt;&amp;lt; soap:operation soapaction="http://rsconsis.uni.cc/ListarSetorInternamento" style=""&amp;gt;&lt;/pre&gt;&lt;br /&gt;Isto deve ser feito para todas as funções que serão utilizadas, neste caso PesquisaEmpresa também.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5° Passo: Inicializar (e terminar) o serviço.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para isso, na unit principal, defina uma variável WSSoap:&lt;br /&gt;&lt;br /&gt;&lt;div style="overflow: auto;"&gt;&lt;pre style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: rgb(255, 255, 255) none repeat scroll 0% 0%; color: black;"&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;var&lt;/span&gt;  Service&lt;span style="color: #808030;"&gt;:&lt;/span&gt; WSSoap&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Também na unit principal, acrescente o seguinte código de inicialização/finalização:&lt;br /&gt;&lt;br /&gt;&lt;pre style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: rgb(255, 255, 255) none repeat scroll 0% 0%; color: black;"&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;initialization&lt;/span&gt;  SYNAPSE_RegisterHTTP_Transport&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;  Service &lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt; wst_CreateInstance_WSSoap&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;finalization&lt;/span&gt;  Service &lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: #7d0045;"&gt;nil&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Reparem na chamada para inicializar o transporte via synapse. Sem isso dá erro.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;6° Passo: Executar a função PesquisaEmpresa&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A função PesquisaEmpresa retorna os dados da Unidade de Saúde. Como dito anteriormente, é necessário passar o CNES. O formato da resposta é um arquivo xml serializado em uma string.&lt;br /&gt;&lt;br /&gt;Os detalhes: PesquisaEmpresa (definida na interface WSSoap) requer um parametro PesquisaEmpresa_Type o qual contém um campo string para definir o CNES. A função retorna uma instância de um objeto PesquisaEmpresaResponse que por sua vez tem um campo string (PesquisaEmpresaResult). É neste campo que encontramos o xml serializado. Abaixo a rotina que chama o serviço e converte a string em um TXMLDocument. Após isto é só extrair os dados necessários (código completo no programa de demonstração)&lt;br /&gt;&lt;br /&gt;&lt;pre style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: rgb(255, 255, 255) none repeat scroll 0% 0%; color: black;"&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;function&lt;/span&gt; GetUnitNameXml&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;out&lt;/span&gt; XmlTree&lt;span style="color: #808030;"&gt;:&lt;/span&gt; TXMLDocument&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt; &lt;span style="color: #bb7977;"&gt;Boolean&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;var&lt;/span&gt;  Param&lt;span style="color: #808030;"&gt;:&lt;/span&gt; PesquisaEmpresa_Type&lt;span style="color: purple;"&gt;;&lt;/span&gt;  Response&lt;span style="color: #808030;"&gt;:&lt;/span&gt; PesquisaEmpresaResponse&lt;span style="color: purple;"&gt;;&lt;/span&gt;  S&lt;span style="color: #808030;"&gt;:&lt;/span&gt; &lt;span style="color: #bb7977;"&gt;String&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;begin&lt;/span&gt;  XmlTree &lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: #7d0045;"&gt;nil&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;  Param &lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: #7d0045;"&gt;nil&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;  Response &lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: #7d0045;"&gt;nil&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;  &lt;span style="color: maroon; font-weight: bold;"&gt;Result&lt;/span&gt; &lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: #7d0045;"&gt;True&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;  &lt;span style="color: maroon; font-weight: bold;"&gt;try&lt;/span&gt;    Param &lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt; PesquisaEmpresa_Type&lt;span style="color: #808030;"&gt;.&lt;/span&gt;Create&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;    Param&lt;span style="color: #808030;"&gt;.&lt;/span&gt;cnes &lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;'00000'&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;    Response &lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt; Service&lt;span style="color: #808030;"&gt;.&lt;/span&gt;PesquisaEmpresa&lt;span style="color: #808030;"&gt;(&lt;/span&gt;Param&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;    &lt;span style="color: dimgrey;"&gt;//O serviço erroneamente declara como se fosse codificado em UTF-16.&lt;/span&gt;    S &lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt; StringReplace&lt;span style="color: #808030;"&gt;(&lt;/span&gt;Response&lt;span style="color: #808030;"&gt;.&lt;/span&gt;PesquisaEmpresaResult&lt;span style="color: #808030;"&gt;,&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;'utf-16'&lt;/span&gt;&lt;span style="color: #808030;"&gt;,&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;'utf-8'&lt;/span&gt;&lt;span style="color: #808030;"&gt;,&lt;/span&gt; &lt;span style="color: #808030;"&gt;[&lt;/span&gt;rfReplaceAll&lt;span style="color: #808030;"&gt;]&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;    Str2XmlFile&lt;span style="color: #808030;"&gt;(&lt;/span&gt;XmlTree&lt;span style="color: #808030;"&gt;,&lt;/span&gt; S&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;  &lt;span style="color: maroon; font-weight: bold;"&gt;except&lt;/span&gt;    FreeAndNil&lt;span style="color: #808030;"&gt;(&lt;/span&gt;XmlTree&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;    &lt;span style="color: maroon; font-weight: bold;"&gt;Result&lt;/span&gt; &lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: #7d0045;"&gt;False&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;  &lt;span style="color: maroon; font-weight: bold;"&gt;end&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;  Response&lt;span style="color: #808030;"&gt;.&lt;/span&gt;Free&lt;span style="color: purple;"&gt;;&lt;/span&gt;  Param&lt;span style="color: #808030;"&gt;.&lt;/span&gt;Free&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;end&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;7° Passo: Executar a função ListarSetorInternamento&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Aqui a porca quase que torce o rabo!. Da mesma forma que na função anterior é necessário passar um parâmetro com o CNES definido e um objeto com a resposta é retornado. Entretanto o campo com o resultado (ListarSetorInternamentoResult) não é uma string e sim uma classe derivada do TBaseComplexRemotable:&lt;br /&gt;&lt;br /&gt;&lt;pre style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: rgb(255, 255, 255) none repeat scroll 0% 0%; color: black;"&gt;ListarSetorInternamentoResponse_ListarSetorInternamentoResult_Type &lt;span style="color: #808030;"&gt;=&lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;class&lt;/span&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;TBaseComplexRemotable&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;end&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Quando me deparei com essa classe fui procurar em TBaseComplexRemotable uma string, um buffer, um TXMLDocument com o conteúdo da resposta e nada... Só depois de algum tempo batendo cabeça descobri que era necessário implementar o método Load definido na classe TBaseRemotable. Então, criei a classe TComplexXmlContentRemotable, derivada de TAbstractComplexRemotable, que pega o resultado e armazena em um buffer (TMemoryStream).&lt;br /&gt;&lt;br /&gt;&lt;pre style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: rgb(255, 255, 255) none repeat scroll 0% 0%; color: black;"&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;class&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;procedure&lt;/span&gt; TComplexXmlContentRemotable&lt;span style="color: #808030;"&gt;.&lt;/span&gt;Load&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;var&lt;/span&gt; AObject&lt;span style="color: #808030;"&gt;:&lt;/span&gt; TObject&lt;span style="color: purple;"&gt;;&lt;/span&gt;  AStore&lt;span style="color: #808030;"&gt;:&lt;/span&gt; IFormatterBase&lt;span style="color: purple;"&gt;;&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;var&lt;/span&gt; AName&lt;span style="color: #808030;"&gt;:&lt;/span&gt; &lt;span style="color: #bb7977;"&gt;string&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;const&lt;/span&gt; ATypeInfo&lt;span style="color: #808030;"&gt;:&lt;/span&gt; PTypeInfo&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;begin&lt;/span&gt;  &lt;span style="color: maroon; font-weight: bold;"&gt;if&lt;/span&gt; AObject &lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: #7d0045;"&gt;nil&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;then&lt;/span&gt;    AObject &lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt; Create&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;  &lt;span style="color: maroon; font-weight: bold;"&gt;with&lt;/span&gt; AObject &lt;span style="color: maroon; font-weight: bold;"&gt;as&lt;/span&gt; TComplexXmlContentRemotable &lt;span style="color: maroon; font-weight: bold;"&gt;do&lt;/span&gt;  &lt;span style="color: maroon; font-weight: bold;"&gt;begin&lt;/span&gt;    &lt;span style="color: maroon; font-weight: bold;"&gt;if&lt;/span&gt; FStream &lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: #7d0045;"&gt;nil&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;then&lt;/span&gt;      FStream &lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt; TMemoryStream&lt;span style="color: #808030;"&gt;.&lt;/span&gt;Create    &lt;span style="color: maroon; font-weight: bold;"&gt;else&lt;/span&gt;      FStream&lt;span style="color: #808030;"&gt;.&lt;/span&gt;Clear&lt;span style="color: purple;"&gt;;&lt;/span&gt;    AStore&lt;span style="color: #808030;"&gt;.&lt;/span&gt;SaveToStream&lt;span style="color: #808030;"&gt;(&lt;/span&gt;FStream&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;    FStream&lt;span style="color: #808030;"&gt;.&lt;/span&gt;Position &lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: #008c00;"&gt;0&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;  &lt;span style="color: maroon; font-weight: bold;"&gt;end&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;end&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Depois disso é necessário redefinir a classe da resposta:&lt;br /&gt;&lt;br /&gt;&lt;pre style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: rgb(255, 255, 255) none repeat scroll 0% 0%; color: black;"&gt;ListarSetorInternamentoResponse_ListarSetorInternamentoResult_Type &lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;class&lt;/span&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;TComplexXmlContentRemotable&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;e utilizar o xml armazenado no buffer:&lt;br /&gt;&lt;br /&gt;&lt;pre style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: rgb(255, 255, 255) none repeat scroll 0% 0%; color: black;"&gt;ReadXMLFile&lt;span style="color: #808030;"&gt;(&lt;/span&gt;XmlTree&lt;span style="color: #808030;"&gt;,&lt;/span&gt; Response&lt;span style="color: #808030;"&gt;.&lt;/span&gt;ListarSetorInternamentoResult&lt;span style="color: #808030;"&gt;.&lt;/span&gt;Stream&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Fica a pergunta: porque o serviço não retorna o resultado com os dados já armazenados em seus devidos tipos?. O desenvolvedor do WST me relatou que a resposta contém namespaces e, no momento, esse tipo de resposta não é reconhecido devendo ser utilizado a informação crua.&lt;br /&gt;&lt;br /&gt;O programa completo encontra-se &lt;a href="http://www.silvioprog.com.br/downloads/Cliente_SOAP_SAH.zip"&gt;aqui&lt;/a&gt;. Além de conter as rotinas para usar o serviço, o programa mostra como usar o XPath para extrair dados de uma árvore XML e como mostrar uma XML em um TreeView.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_vsnitvZr5Ps/S6ab_0UQ3ZI/AAAAAAAAAFA/KORmL2ylYnw/s1600-h/client.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5451215919656263058" src="http://4.bp.blogspot.com/_vsnitvZr5Ps/S6ab_0UQ3ZI/AAAAAAAAAFA/KORmL2ylYnw/s320/client.png" style="display: block; height: 184px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="background-color: red; color: white;"&gt;&amp;nbsp;Artigo atualizado em 24/03/2010&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-117755688499851413?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8qngDogrsvahM4RTQg0idVhywYc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8qngDogrsvahM4RTQg0idVhywYc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8qngDogrsvahM4RTQg0idVhywYc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8qngDogrsvahM4RTQg0idVhywYc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1_-qYIvKhTo:FMo380BKE0c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1_-qYIvKhTo:FMo380BKE0c:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1_-qYIvKhTo:FMo380BKE0c:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1_-qYIvKhTo:FMo380BKE0c:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1_-qYIvKhTo:FMo380BKE0c:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=1_-qYIvKhTo:FMo380BKE0c:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1_-qYIvKhTo:FMo380BKE0c:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1_-qYIvKhTo:FMo380BKE0c:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=1_-qYIvKhTo:FMo380BKE0c:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1_-qYIvKhTo:FMo380BKE0c:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1_-qYIvKhTo:FMo380BKE0c:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=1_-qYIvKhTo:FMo380BKE0c:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1_-qYIvKhTo:FMo380BKE0c:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1_-qYIvKhTo:FMo380BKE0c:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=1_-qYIvKhTo:FMo380BKE0c:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=1_-qYIvKhTo:FMo380BKE0c:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/1_-qYIvKhTo" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2010-07-02T17:25:31.798-03:00</atom:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_vsnitvZr5Ps/S6aUl_jVSUI/AAAAAAAAAEw/QgwptuDt6Ek/s72-c/soapui_small.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2010/03/utilizando-web-services-soap-no-lazarus.html</feedburner:origLink></item><item><title>Novo contribuidor - apresentação</title><link>http://feedproxy.google.com/~r/silvioprog/~3/Sg9D8SIIJ5c/novo-contribuidor-apresentacao.html</link><author>noreply@blogger.com (Luiz Américo)</author><pubDate>Sun, 21 Mar 2010 14:31:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-5600076233396691156</guid><description>&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;Olá, meu nome é Luiz Américo, sou usuário do Lazarus há longa data (desde 2001) e desenvolvo alguns componentes como o TSqlite3Dataset e o port do VirtualTreeView.&lt;br /&gt;&lt;br /&gt;Com o aumento do interesse no Lazarus no Brasil decidi contribuir com a comunidade escrevendo também em português (tenho um &lt;a href="http://lazarusroad.blogspot.com/"&gt;blog&lt;/a&gt; em inglês). Sempre que houver algo interessante estarei postando aqui no blog do Silvio, ao qual desde já agradeço pelo espaço.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-5600076233396691156?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/849gfdiQXR6C8EOzPJ8U6b62k28/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/849gfdiQXR6C8EOzPJ8U6b62k28/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/849gfdiQXR6C8EOzPJ8U6b62k28/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/849gfdiQXR6C8EOzPJ8U6b62k28/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Sg9D8SIIJ5c:hNeMm9tjCmU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Sg9D8SIIJ5c:hNeMm9tjCmU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Sg9D8SIIJ5c:hNeMm9tjCmU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Sg9D8SIIJ5c:hNeMm9tjCmU:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Sg9D8SIIJ5c:hNeMm9tjCmU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=Sg9D8SIIJ5c:hNeMm9tjCmU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Sg9D8SIIJ5c:hNeMm9tjCmU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Sg9D8SIIJ5c:hNeMm9tjCmU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=Sg9D8SIIJ5c:hNeMm9tjCmU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Sg9D8SIIJ5c:hNeMm9tjCmU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Sg9D8SIIJ5c:hNeMm9tjCmU:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=Sg9D8SIIJ5c:hNeMm9tjCmU:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Sg9D8SIIJ5c:hNeMm9tjCmU:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Sg9D8SIIJ5c:hNeMm9tjCmU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=Sg9D8SIIJ5c:hNeMm9tjCmU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Sg9D8SIIJ5c:hNeMm9tjCmU:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/Sg9D8SIIJ5c" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2010-03-21T19:20:35.054-03:00</atom:updated><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2010/03/novo-contribuidor-apresentacao.html</feedburner:origLink></item><item><title>Prevenindo problemas com caracteres acentuados no Lazarus</title><link>http://feedproxy.google.com/~r/silvioprog/~3/QTb_2OJkSLc/prevenindo-problemas-com-caracteres.html</link><category>DataBase</category><category>Lazarus</category><category>LCL</category><category>Sistemas</category><category>Dicas</category><category>Artigos</category><category>Exemplos</category><author>gsilvioprog@gmail.com (programmer ObjectPascal)</author><pubDate>Fri, 12 Mar 2010 16:15:00 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-6483633990285583368</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_95z3O3W55Lw/S5rRFtxpOuI/AAAAAAAAAiw/ahtR8gyVFRk/s1600-h/acentuacao_grafica.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="247" src="http://4.bp.blogspot.com/_95z3O3W55Lw/S5rRFtxpOuI/AAAAAAAAAiw/ahtR8gyVFRk/s320/acentuacao_grafica.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;De início, vou mostrar o que falei em &lt;i&gt;private&lt;/i&gt; certo dia para um amigo:&lt;br /&gt;
&lt;blockquote&gt;Você já percebeu como os sistemas comerciais evitam caracteres acentuados? Bancos, repartições públicas, sites na Web, e etc. Eu já fui contra isso, era do tipo que não aceitava um &lt;i&gt;ATENCAO&lt;/i&gt; no lugar de um &lt;i&gt;ATENÇÃO&lt;/i&gt;, só hoje com algum tempo na área de programação é que pude entender essa assídua fuga de acentuação gráfica em sistemas.&lt;/blockquote&gt;Antes de escrever esse artigo eu pesquisei com amigos no &lt;a href="http://groups.google.com.br/group/lazarus-br?hl=pt-BR"&gt;nosso grupo &lt;i&gt;Lazarus&lt;/i&gt; no &lt;i&gt;Google&lt;/i&gt;&lt;/a&gt; e na &lt;a href="http://br.groups.yahoo.com/group/lazarus-brasil/"&gt;lista de discussão sobre &lt;i&gt;Lazarus&lt;/i&gt; no &lt;i&gt;Yahoo&lt;/i&gt;&lt;/a&gt;, em todos os emails eu havia deixado claro que estava evitando o &lt;i&gt;OnChange&lt;/i&gt;, pois conversando com um amigo ele me mostrou outro método onde eu poderia trabalhar. Seria no &lt;i&gt;OnKeyPress&lt;/i&gt;, ou &lt;i&gt;OnUTF8KeyPress&lt;/i&gt;, mas infelizmente esses dois métodos estão recebendo suporte para o &lt;i&gt;GTK2&lt;/i&gt;. Se você tem algum conhecimento sobre as implementações do &lt;i&gt;Lazarus&lt;/i&gt; para o &lt;i&gt;widget&lt;/i&gt; &lt;i&gt;GTK2&lt;/i&gt;, poderá contribuir para resolver o problema &lt;a href="http://bugs.freepascal.org/view.php?id=15932"&gt;aqui&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Mas este artigo não é para falar de problema no &lt;i&gt;Lazarus&lt;/i&gt;, e sim precaver-se desse tipo de problema em seus aplicativos. Explicarei a maneira como consegui resolver e que será a usada em todos os meus aplicativos. Usarei a substituição de caracteres em tempo real.&lt;br /&gt;
&lt;br /&gt;
Algumas pessoas tem bancos de dados enorme em formato &lt;i&gt;Ansi&lt;/i&gt;, e julgam inviável migrar para &lt;i&gt;UTF-8&lt;/i&gt;, e elas devem ter seus motivos. Mas eu sempre recomendo migrar, criar um banco novo e ir migrando para &lt;i&gt;UTF-8&lt;/i&gt; aos poucos, pois com as mudanças de &lt;i&gt;unicode&lt;/i&gt; em diversas ferramentas, incluindo &lt;i&gt;Lazarus&lt;/i&gt; e &lt;i&gt;Delphi&lt;/i&gt;, mais cedo ou mais tarde começarão a aparecer problemas em sistemas que ainda estão em &lt;i&gt;Ansi&lt;/i&gt;. Ou você nunca atualizará o seu sistema? Note que não falo de atualizar a &lt;i&gt;IDE&lt;/i&gt;, mas o &lt;i&gt;S.O&lt;/i&gt; e o sistema desenvolvido por você.&lt;br /&gt;
Ferramentas para conversão de &lt;i&gt;unicode&lt;/i&gt; de banco de dados podem ser encontradas &lt;a href="http://www.silvioprog.com.br/downloads"&gt;aqui&lt;/a&gt;. Se não atender a sua necessidade, serve como referência e ponto de partida.&lt;br /&gt;
&lt;br /&gt;
Alguns amigos me ajudaram na implementação da classe que vou apresentar, busquei ajuda aqui no Brasil e nos Estados Unidos, não na lógica das rotinas, mas na prevenção de erros nelas por conta do &lt;i&gt;unicode&lt;/i&gt; do &lt;i&gt;Lazarus&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
A minha lógica não é milagrosa e muito menos misteriosa, apenas irei substituir caracteres acentuados por caracteres equivalentes, por exemplo:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #444444;"&gt;&lt;b&gt;&lt;i&gt;Comparação simples:&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;i&gt;Ã = A&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Ç = C&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Ñ = N&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Ê = E&lt;/i&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #444444;"&gt;Lista completa de caracteres acentuados:&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;i&gt;'à', 'á', 'â', 'ã', 'ä', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ò', 'ó', 'ô', 'õ', 'ö', 'ù', 'ú', 'û', 'ü', 'À', 'Á', 'Â', 'Ã', 'Ä', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ù', 'Ú', 'Û', 'Ü', 'ç', 'Ç', 'ñ', 'Ñ'.&lt;/i&gt;&lt;br /&gt;
&lt;hr /&gt;Faltou algum? Declare :-)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #444444;"&gt;Tenho &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #444444;"&gt;"trocentos"&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #444444;"&gt; componentes para edição em meus &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #444444;"&gt;Forms&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #444444;"&gt;, como vou aplicar a regra de substituição de caracteres em todos eles?&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Simples. Registre todos os componentes de edição na classe &lt;i&gt;TWithoutAccent_pt_BR&lt;/i&gt; através do método de classe &lt;i&gt;RegisterEdits&lt;/i&gt;, que recebe um &lt;i&gt;array&lt;/i&gt; de &lt;i&gt;TCustomEdit's&lt;/i&gt;, exemplo:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #444444;"&gt;Código:&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;hr /&gt;(...)&lt;br /&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;TWithoutAccent_pt_BR&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;RegisterEdits&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Edit1&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; Edit2&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; MaskEdit1&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; Memo1&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style="color: purple;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;/pre&gt;(...)&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
Você pode registrar quantos componentes quiser. Internamente a classe &lt;i&gt;TWithoutAccent_pt_BR&lt;/i&gt; usa a classe &lt;i&gt;TWithoutAccent&lt;/i&gt;, que usa a função &lt;i&gt;WithoutAccent_ptBR&lt;/i&gt; no &lt;i&gt;OnChange&lt;/i&gt; de cada componente, mas deixando-o intacto e livre para uso, em cada componente. Para ficar mais claro, mostrarei de uma forma bem simples como fiz, veja no código comentado abaixo:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #444444;"&gt;Código:&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;var&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;
  I&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="color: #bb7977;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;integer&lt;/span&gt;&lt;/span&gt;&lt;span style="color: purple;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;
  S&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="color: #bb7977;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;span style="color: purple;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;
  VEdit&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; TCustomEdit&lt;/span&gt;&lt;span style="color: purple;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="color: dimgrey;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;// Declarei para não ser necessário repetir tanto o TCustomEdit(Sender);&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;
&lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;begin&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;
  VEdit &lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; TCustomEdit&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Sender&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style="color: purple;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="color: dimgrey;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;// Capturo a instância do componente corrente para VEdit;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;
  S &lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; WithoutAccent_ptBR&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;VEdit&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #bb7977;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Text&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style="color: purple;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="color: dimgrey;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;// Capturo o texto do componente e substituo os caracteres;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;
  &lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; S&amp;nbsp;&lt;span class="Apple-style-span" style="color: #808030;"&gt;&amp;lt;&amp;gt;&lt;span class="Apple-style-span" style="color: black; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;VEdit&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #bb7977;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Text&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;then&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="color: dimgrey;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;// Verifico se há diferença no texto do componente e no texto sem caracteres acentuados ...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  &lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;begin&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;
    I &lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; VEdit&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;SelStart&lt;/span&gt;&lt;span style="color: purple;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="color: dimgrey;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;// ... caso positivo, capturo a posição do cursor do componente;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;
    VEdit&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #bb7977;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Text&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; S&lt;/span&gt;&lt;span style="color: purple;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="color: dimgrey;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;// Substituo o texto com caracteres acentuados pelo texto sem;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;
    VEdit&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;SelStart &lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; I&lt;/span&gt;&lt;span style="color: purple;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="color: dimgrey;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;// Devolvo a posição do cursor;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;
  &lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;span style="color: purple;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;
  &lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; Assigned&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;FOldOnChange&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;then&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="color: dimgrey;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;// Verifico se existe algo implementado no método &lt;i&gt;OnChange&lt;/i&gt; do componente ...&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;
    FoldOnChange&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Sender&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style="color: purple;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="color: dimgrey;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;// ... caso positivo, o executo;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;
&lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;span style="color: purple;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;hr /&gt;&lt;br /&gt;
Viu como é simples? Aproveitei a mesma lógica de como a classe &amp;nbsp;&lt;i&gt;TCustomEdit&lt;/i&gt; implementa o &lt;i&gt;CharCase&lt;/i&gt;. Não entrarei em detalhes sobre as outras partes da classe pois ela é muito simples, um exemplo completo usando todos os recursos da classe pode ser baixado &lt;a href="http://sites.google.com/site/silvioprogbs/downloads/WithoutAccent_pt_BR.zip"&gt;aqui&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Caso você tenha gostado – ou não :) –, ou em caso de dúvidas, comente, sinta-se a vontade.&lt;br /&gt;
&lt;br /&gt;
Abraços e até a próxima.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://silvioclecio.blogspot.com/"&gt;Silvio Clécio&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Baixe este artigo em formato &lt;b&gt;PDF&lt;/b&gt; &lt;a href="http://www.silvioprog.com.br/documentos/PrevenindoproblemascomcaracteresacentuadosnoLazarus.pdf"&gt;aqui&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-6483633990285583368?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Wt01oj35wyxnkzFDbw2I8SVEUlg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Wt01oj35wyxnkzFDbw2I8SVEUlg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Wt01oj35wyxnkzFDbw2I8SVEUlg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Wt01oj35wyxnkzFDbw2I8SVEUlg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=QTb_2OJkSLc:InXloGgOjBA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=QTb_2OJkSLc:InXloGgOjBA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=QTb_2OJkSLc:InXloGgOjBA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=QTb_2OJkSLc:InXloGgOjBA:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=QTb_2OJkSLc:InXloGgOjBA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=QTb_2OJkSLc:InXloGgOjBA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=QTb_2OJkSLc:InXloGgOjBA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=QTb_2OJkSLc:InXloGgOjBA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=QTb_2OJkSLc:InXloGgOjBA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=QTb_2OJkSLc:InXloGgOjBA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=QTb_2OJkSLc:InXloGgOjBA:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=QTb_2OJkSLc:InXloGgOjBA:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=QTb_2OJkSLc:InXloGgOjBA:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=QTb_2OJkSLc:InXloGgOjBA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=QTb_2OJkSLc:InXloGgOjBA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=QTb_2OJkSLc:InXloGgOjBA:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/QTb_2OJkSLc" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2010-07-18T23:19:33.744-03:00</atom:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_95z3O3W55Lw/S5rRFtxpOuI/AAAAAAAAAiw/ahtR8gyVFRk/s72-c/acentuacao_grafica.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2010/03/prevenindo-problemas-com-caracteres.html</feedburner:origLink></item><item><title>Salvando configurações de aplicativo Lazarus</title><link>http://feedproxy.google.com/~r/silvioprog/~3/__-SAbeZEVQ/salvando-configuracoes-de-aplicativo.html</link><category>Componentes</category><category>LCL</category><category>Dicas</category><author>silvioprog@gmail.com (Silvio Clécio • Blog)</author><pubDate>Wed, 03 Mar 2010 21:22:00 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-6724691752982431928</guid><description>&lt;a href="http://3.bp.blogspot.com/_l1WyqtcRhYE/S49EEcAoyqI/AAAAAAAABrk/xkN628VEEII/s1600-h/lazarus_xml.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5444645317543250594" src="http://3.bp.blogspot.com/_l1WyqtcRhYE/S49EEcAoyqI/AAAAAAAABrk/xkN628VEEII/s320/lazarus_xml.png" style="cursor: pointer; display: block; height: 146px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;Em algumas ocasiões precisamos salvar as configurações do aplicativo, como posição do &lt;i&gt;Form&lt;/i&gt; quando foi fechado, texto em &lt;i&gt;Edit&lt;/i&gt; de nome de &lt;i&gt;login&lt;/i&gt;, e outras coisas como as opções do sistema – caso você tenha criado, claro.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Fazer isso no &lt;i&gt;Lazarus&lt;/i&gt; é muito simples, e para agradar mais ainda o desenvolvedor, o recurso é nativo :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Os dois componentes que foram criados para esse fim, são:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;i&gt;IniPropStorage&lt;/i&gt; – Salva as configurações num arquivo &lt;i&gt;INI&lt;/i&gt;;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;XMLPropStorage&lt;/i&gt; – Salva as configurações num arquivo &lt;i&gt;XML&lt;/i&gt;;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Vamos usar o  &lt;i&gt;XMLPropStorage&lt;/i&gt; e ver o componente em ação, para isso faça o seguinte:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Inicie um novo projeto;&lt;/li&gt;
&lt;li&gt;Solte um componente &lt;i&gt;XMLPropStorage&lt;/i&gt; no &lt;i&gt;Form&lt;/i&gt; (ele fica na aba &lt;i&gt;Misc&lt;/i&gt;);&lt;/li&gt;
&lt;li&gt;No &lt;i&gt;Form&lt;/i&gt; onde você colou o componente terá a propriedade &lt;i&gt;SessionProperties&lt;/i&gt;, basta definir quais as propriedades do aplicativo que você quer salvar no &lt;i&gt;XML&lt;/i&gt;;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Para testar, clique no botão com "..." &lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;e escolha as propriedades &lt;/span&gt;Lef&lt;span class="Apple-style-span" style="font-style: normal;"&gt; e &lt;/span&gt;Top&lt;span class="Apple-style-span" style="font-style: normal;"&gt;, vamos salvar a posição onde o &lt;/span&gt;&lt;span class="Apple-style-span"&gt;Form&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt; estava quando foi fechado, veja a definição na imagem abaixo:&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;a href="http://2.bp.blogspot.com/_l1WyqtcRhYE/S49RrDdcaXI/AAAAAAAABsQ/lLrr4vIKEdo/s1600-h/properties_of_form1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5444660274619246962" src="http://2.bp.blogspot.com/_l1WyqtcRhYE/S49RrDdcaXI/AAAAAAAABsQ/lLrr4vIKEdo/s320/properties_of_form1.png" style="cursor: pointer; display: block; height: 317px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Rode o projeto, mova o &lt;i&gt;Form&lt;/i&gt; para um canto da tela, feche o aplicativo e rode-o novamente, o &lt;i&gt;Form&lt;/i&gt; irá abrir exatamente na posição onde você deixou quando o fechou. Simples não?!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Note que os componentes tem opções para configuração, você pode informar o caminho onde será salvo o arquivo de configuração (se deixar a propriedade &lt;i&gt;FileName&lt;/i&gt; em branco ele cria um arquivo com o nome do seu projeto), dente outras coisas.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;É isso, caso queira conhecer mais os componentes, visite o &lt;a href="http://wiki.lazarus.freepascal.org/"&gt;wiki do Lazarus&lt;/a&gt;, eu estou contribuindo por lá também ;-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href="http://silvioclecio.blogspot.com/"&gt;Silvio Clécio&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-6724691752982431928?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RWsEnfWNZPPynmyKJCR9EvbWQts/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RWsEnfWNZPPynmyKJCR9EvbWQts/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RWsEnfWNZPPynmyKJCR9EvbWQts/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RWsEnfWNZPPynmyKJCR9EvbWQts/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=__-SAbeZEVQ:h3U9_Wp74hM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=__-SAbeZEVQ:h3U9_Wp74hM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=__-SAbeZEVQ:h3U9_Wp74hM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=__-SAbeZEVQ:h3U9_Wp74hM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=__-SAbeZEVQ:h3U9_Wp74hM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=__-SAbeZEVQ:h3U9_Wp74hM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=__-SAbeZEVQ:h3U9_Wp74hM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=__-SAbeZEVQ:h3U9_Wp74hM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=__-SAbeZEVQ:h3U9_Wp74hM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=__-SAbeZEVQ:h3U9_Wp74hM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=__-SAbeZEVQ:h3U9_Wp74hM:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=__-SAbeZEVQ:h3U9_Wp74hM:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=__-SAbeZEVQ:h3U9_Wp74hM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=__-SAbeZEVQ:h3U9_Wp74hM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=__-SAbeZEVQ:h3U9_Wp74hM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=__-SAbeZEVQ:h3U9_Wp74hM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/__-SAbeZEVQ" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2010-03-04T04:00:03.767-03:00</atom:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_l1WyqtcRhYE/S49EEcAoyqI/AAAAAAAABrk/xkN628VEEII/s72-c/lazarus_xml.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2010/03/salvando-configuracoes-de-aplicativo.html</feedburner:origLink></item><item><title>Form e/ou função em Lib ou DLL com Lazarus</title><link>http://feedproxy.google.com/~r/silvioprog/~3/Hkl3y8qT71s/form-eou-funcao-em-lib-ou-dll-com.html</link><category>Linux</category><category>Lazarus</category><category>LCL</category><category>Dicas</category><category>Exemplos</category><author>silvioprog@gmail.com (Silvio Clécio • Blog)</author><pubDate>Sun, 28 Feb 2010 03:06:00 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-8468565871136147209</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_l1WyqtcRhYE/S4pNHntwg4I/AAAAAAAABqI/K6X0vX4SBpQ/s1600-h/lib-tux.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_l1WyqtcRhYE/S4pNHntwg4I/AAAAAAAABqI/K6X0vX4SBpQ/s320/lib-tux.png" width="266" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;Eu passei algumas horas pesquisando sobre isso e confesso que pensei que não era possível, mas no final vi que além de ser possível já tem gente modularizando sistema dessa maneira, dividindo o sistema em vários arquivos. Não sou muito a favor disso – modularizarão – mas deixo aí minha pequena contribuição mostrando uma saída, baixe o exemplo completo no link abaixo:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;a href="http://www.silvioprog.com.br/downloads/MakeYourFuncLib-FormLib.zip"&gt;http://www.silvioprog.com.br/downloads/MakeYourFuncLib-FormLib.zip&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;Vale lembrar que testei no &lt;i&gt;Linux&lt;/i&gt; e &lt;i&gt;Windows&lt;/i&gt;, e funcionou perfeitamente. Deixei dois scripts (para os novatos ;-) ) para instalação das libs no &lt;i&gt;Linux&lt;/i&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;Enjoy!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;a href="http://silvioclecio.blogspot.com/"&gt;Silvio Clécio&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-8468565871136147209?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9qiQwa9-FexVi4vKW5PiNuJC7dM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9qiQwa9-FexVi4vKW5PiNuJC7dM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9qiQwa9-FexVi4vKW5PiNuJC7dM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9qiQwa9-FexVi4vKW5PiNuJC7dM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Hkl3y8qT71s:U_DMZtaQYkA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Hkl3y8qT71s:U_DMZtaQYkA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Hkl3y8qT71s:U_DMZtaQYkA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Hkl3y8qT71s:U_DMZtaQYkA:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Hkl3y8qT71s:U_DMZtaQYkA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=Hkl3y8qT71s:U_DMZtaQYkA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Hkl3y8qT71s:U_DMZtaQYkA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Hkl3y8qT71s:U_DMZtaQYkA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=Hkl3y8qT71s:U_DMZtaQYkA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Hkl3y8qT71s:U_DMZtaQYkA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Hkl3y8qT71s:U_DMZtaQYkA:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=Hkl3y8qT71s:U_DMZtaQYkA:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Hkl3y8qT71s:U_DMZtaQYkA:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Hkl3y8qT71s:U_DMZtaQYkA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=Hkl3y8qT71s:U_DMZtaQYkA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=Hkl3y8qT71s:U_DMZtaQYkA:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/Hkl3y8qT71s" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2010-03-09T23:08:03.884-03:00</atom:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_l1WyqtcRhYE/S4pNHntwg4I/AAAAAAAABqI/K6X0vX4SBpQ/s72-c/lib-tux.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2010/02/form-eou-funcao-em-lib-ou-dll-com.html</feedburner:origLink></item><item><title>Desabilitando diálogo de erro nativo do Lazarus</title><link>http://feedproxy.google.com/~r/silvioprog/~3/INWQBJg4ybc/desabilitando-dialogo-de-erro-nativo-do.html</link><category>Lazarus</category><category>LCL</category><category>Dicas</category><category>Exemplos</category><author>silvioprog@gmail.com (Silvio Clécio • Blog)</author><pubDate>Mon, 15 Feb 2010 22:01:00 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-3282473624013843827</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_l1WyqtcRhYE/S3oyp23S8YI/AAAAAAAABp4/JMiZgvbScws/s1600-h/lazarus-default_error.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="185" src="http://3.bp.blogspot.com/_l1WyqtcRhYE/S3oyp23S8YI/AAAAAAAABp4/JMiZgvbScws/s400/lazarus-default_error.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Se você não gosta dessa janela de erro nativa do &lt;i&gt;Lazarus&lt;/i&gt;, e quer trocar por outra, acesse &lt;a href="http://www.silvioprog.com.br/downloads/DisableDefaultDialogError.zip"&gt;este link&lt;/a&gt; e baixe um exemplo que fiz para usar dois tipos de janelas, onde irá aparecer somente o botão &lt;i&gt;OK&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #666666;"&gt;&lt;b&gt;&lt;i&gt;O que foi feito?&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Eu criei uma classe bem simples, que registra um novo &lt;i&gt;ExceptionHandler&lt;/i&gt; e remove o antigo, bastando apenas chamar o método Register da classe no &lt;i&gt;initialization&lt;/i&gt; na &lt;i&gt;Unit&lt;/i&gt; do &lt;i&gt;Form&lt;/i&gt; principal ou no &lt;i&gt;OnCreate&lt;/i&gt; do mesmo.&lt;br /&gt;
&lt;br /&gt;
Novamente, o link do exemplo esta &lt;a href="http://www.silvioprog.com.br/downloads/DisableDefaultDialogError.zip"&gt;aqui&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Enjoy!&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://silvioclecio.blogspot.com/"&gt;Silvio Clécio&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-3282473624013843827?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PxC_owSfczeDN6v2RUPR_4PQPVw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PxC_owSfczeDN6v2RUPR_4PQPVw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PxC_owSfczeDN6v2RUPR_4PQPVw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PxC_owSfczeDN6v2RUPR_4PQPVw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=INWQBJg4ybc:L5-kyP7m7Kc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=INWQBJg4ybc:L5-kyP7m7Kc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=INWQBJg4ybc:L5-kyP7m7Kc:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=INWQBJg4ybc:L5-kyP7m7Kc:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=INWQBJg4ybc:L5-kyP7m7Kc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=INWQBJg4ybc:L5-kyP7m7Kc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=INWQBJg4ybc:L5-kyP7m7Kc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=INWQBJg4ybc:L5-kyP7m7Kc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=INWQBJg4ybc:L5-kyP7m7Kc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=INWQBJg4ybc:L5-kyP7m7Kc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=INWQBJg4ybc:L5-kyP7m7Kc:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=INWQBJg4ybc:L5-kyP7m7Kc:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=INWQBJg4ybc:L5-kyP7m7Kc:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=INWQBJg4ybc:L5-kyP7m7Kc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=INWQBJg4ybc:L5-kyP7m7Kc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=INWQBJg4ybc:L5-kyP7m7Kc:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/INWQBJg4ybc" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2010-02-16T03:07:42.617-03:00</atom:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_l1WyqtcRhYE/S3oyp23S8YI/AAAAAAAABp4/JMiZgvbScws/s72-c/lazarus-default_error.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2010/02/desabilitando-dialogo-de-erro-nativo-do.html</feedburner:origLink></item><item><title>Atualize seu navegador</title><link>http://feedproxy.google.com/~r/silvioprog/~3/gvtCCk34a8A/atualize-seu-navegador.html</link><category>Internet</category><category>Firefox</category><author>silvioprog@gmail.com (Silvio Clécio • Blog)</author><pubDate>Sun, 07 Feb 2010 21:25:00 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-104576450201732738</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://updateyourbrowser.net/" style="margin-left: 1em; margin-right: 1em;" title="Atualize seu Navegador"&gt;&lt;img alt="Atualize seu Navegador" border="0" src="http://updateyourbrowser.net/asn.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Por que devo atualizar?&lt;br /&gt;
&lt;br /&gt;
Navegadores antigos como o Internet Explorer 6 (lançado em 2001) não exibem sites dentro dos padrões web, são repletos de bugs, não oferecem as funcionalidades dos browsers atuais como navegação por abas ou gerenciador de downloads e estão submetidos a sérios problemas de segurança como vírus e malware.&lt;br /&gt;
&lt;br /&gt;
Ainda comprometem a qualidade da exibição de sites e limitam a criação de desenvolvedores, que precisam perder tempo adaptando o site para rodar nesses navegadores obsoletos.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://updateyourbrowser.net/" style="margin-left: 1em; margin-right: 1em;" title="Atualize seu Navegador"&gt;&lt;img alt="Atualize seu Navegador" border="0" src="http://updateyourbrowser.net/asn.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-104576450201732738?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fGoMbdLj0rxGY-hJaDXBesMgVTQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fGoMbdLj0rxGY-hJaDXBesMgVTQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fGoMbdLj0rxGY-hJaDXBesMgVTQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fGoMbdLj0rxGY-hJaDXBesMgVTQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=gvtCCk34a8A:7zKWIH5zsaM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=gvtCCk34a8A:7zKWIH5zsaM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=gvtCCk34a8A:7zKWIH5zsaM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=gvtCCk34a8A:7zKWIH5zsaM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=gvtCCk34a8A:7zKWIH5zsaM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=gvtCCk34a8A:7zKWIH5zsaM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=gvtCCk34a8A:7zKWIH5zsaM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=gvtCCk34a8A:7zKWIH5zsaM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=gvtCCk34a8A:7zKWIH5zsaM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=gvtCCk34a8A:7zKWIH5zsaM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=gvtCCk34a8A:7zKWIH5zsaM:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=gvtCCk34a8A:7zKWIH5zsaM:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=gvtCCk34a8A:7zKWIH5zsaM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=gvtCCk34a8A:7zKWIH5zsaM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=gvtCCk34a8A:7zKWIH5zsaM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=gvtCCk34a8A:7zKWIH5zsaM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/gvtCCk34a8A" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2010-02-09T01:07:50.656-03:00</atom:updated><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2010/02/atualize-seu-navegador.html</feedburner:origLink></item><item><title>TMediaPlayer no Lazarus</title><link>http://feedproxy.google.com/~r/silvioprog/~3/eKgCPioySDE/tmediaplayer-no-lazarus.html</link><category>Componentes</category><category>Lazarus</category><category>LCL</category><author>silvioprog@gmail.com (Silvio Clécio • Blog)</author><pubDate>Wed, 27 Jan 2010 13:17:00 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-5813513632763244219</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_l1WyqtcRhYE/S2Coo1UOlzI/AAAAAAAABhU/XxDSsMRcMRc/s1600-h/mplayer.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="282" src="http://4.bp.blogspot.com/_l1WyqtcRhYE/S2Coo1UOlzI/AAAAAAAABhU/XxDSsMRcMRc/s400/mplayer.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;hr /&gt;Não será bem o &lt;i&gt;TMediaPlayer&lt;/i&gt; que vamos usar, e sim algo mais completo – o &lt;a href="https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/components/mplayer"&gt;&lt;i&gt;TMPlayerControl&lt;/i&gt;&lt;/a&gt;. O componente usa um aplicativo que costumo brincar falando o seguinte: &lt;i&gt;"... o &lt;a href="http://www.mplayerhq.hu/"&gt;mplayer&lt;/a&gt; roda até tampa de garrafa"&lt;/i&gt; :-).&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
Agora vamos ao que interessa, executar áudio e vídeo no &lt;i&gt;Lazarus&lt;/i&gt;!&lt;br /&gt;
O componente esta disponível no &lt;i&gt;SVN&lt;/i&gt; e na seção de downloads daqui, segue links:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #666666; color: white;"&gt;&lt;b&gt;SVN:&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;hr /&gt;&lt;i&gt;&lt;a href="https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/components/mplayer/"&gt;lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/components/mplayer&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;div style="background-color: #666666; color: white;"&gt;&lt;b&gt;Mirror:&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;hr /&gt;&lt;i&gt;&lt;a href="http://sites.google.com/site/silvioprogbs/downloads/mplayer.zip?attredirects=0&amp;amp;d=1"&gt;sites.google.com/site/silvioprogbs/downloads/mplayer.zip&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
Após baixar o componente instale no &lt;i&gt;Lazarus&lt;/i&gt;, e execute um aplicativo de demonstração disponível na pasta &lt;i&gt;examples&lt;/i&gt;, veja na &lt;b&gt;Figura 1&lt;/b&gt; o componente instalado no &lt;i&gt;Lazarus&lt;/i&gt; e o exemplo aberto:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_l1WyqtcRhYE/S2CpAzRROfI/AAAAAAAABhc/HxtjfuYPS4Q/s1600-h/tmediaplayer-lazarus.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/_l1WyqtcRhYE/S2CpAzRROfI/AAAAAAAABhc/HxtjfuYPS4Q/s400/tmediaplayer-lazarus.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Figura 1.&lt;/b&gt; &lt;i&gt;TMPlayerControl&lt;/i&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Caso você não tenha o &lt;i&gt;mplayer&lt;/i&gt; instalado no &lt;i&gt;Linux&lt;/i&gt;, use o seguinte comando:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #666666; color: white;"&gt;&lt;b&gt;Comando:&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;hr /&gt;&lt;pre&gt;$ sudo apt-get install mplayer-nogui&lt;/pre&gt;&lt;br /&gt;
(Ou clique &lt;a href="apt:mplayer-nogui"&gt;aqui&lt;/a&gt;)&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
Agora você tem um completíssimo executor de mídia open source compatível com &lt;i&gt;Linux&lt;/i&gt;, e totalmente entendível pelo &lt;i&gt;Lazarus&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
Enjoy!&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://silvioclecio.blogspot.com/"&gt;Silvio Clécio&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-5813513632763244219?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lf861F0o5w3VRkYD7aupovnoLGU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lf861F0o5w3VRkYD7aupovnoLGU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lf861F0o5w3VRkYD7aupovnoLGU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lf861F0o5w3VRkYD7aupovnoLGU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=eKgCPioySDE:w0S3ZbYKFiw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=eKgCPioySDE:w0S3ZbYKFiw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=eKgCPioySDE:w0S3ZbYKFiw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=eKgCPioySDE:w0S3ZbYKFiw:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=eKgCPioySDE:w0S3ZbYKFiw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=eKgCPioySDE:w0S3ZbYKFiw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=eKgCPioySDE:w0S3ZbYKFiw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=eKgCPioySDE:w0S3ZbYKFiw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=eKgCPioySDE:w0S3ZbYKFiw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=eKgCPioySDE:w0S3ZbYKFiw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=eKgCPioySDE:w0S3ZbYKFiw:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=eKgCPioySDE:w0S3ZbYKFiw:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=eKgCPioySDE:w0S3ZbYKFiw:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=eKgCPioySDE:w0S3ZbYKFiw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=eKgCPioySDE:w0S3ZbYKFiw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=eKgCPioySDE:w0S3ZbYKFiw:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/eKgCPioySDE" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2010-01-27T18:17:29.891-03:00</atom:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_l1WyqtcRhYE/S2Coo1UOlzI/AAAAAAAABhU/XxDSsMRcMRc/s72-c/mplayer.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2010/01/tmediaplayer-no-lazarus.html</feedburner:origLink></item><item><title>Instalando o PostgreSQL no Ubuntu</title><link>http://feedproxy.google.com/~r/silvioprog/~3/rURmBnri3WM/instalando-o-postgresql-no-ubuntu.html</link><category>DataBase</category><category>SGDBOR</category><author>silvioprog@gmail.com (Silvio Clécio • Blog)</author><pubDate>Sun, 24 Jan 2010 17:05:00 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3891673720975914690.post-9074403131338446825</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_l1WyqtcRhYE/S1zhVd-jKCI/AAAAAAAABeM/c6OD9Fb0Gck/s1600-h/postgresql-8.4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="272" src="http://3.bp.blogspot.com/_l1WyqtcRhYE/S1zhVd-jKCI/AAAAAAAABeM/c6OD9Fb0Gck/s400/postgresql-8.4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;hr /&gt;O objetivo deste artigo é apenas mostrar como instalar o &lt;a href="http://pt.wikipedia.org/wiki/PostgreSQL"&gt;&lt;i&gt;PostgreSQL&lt;/i&gt;&lt;/a&gt;, descobrir os recursos desse poderoso &lt;a href="http://www.vivaolinux.com.br/artigo/PostgreSQL-SGBDOR/?pagina=1"&gt;&lt;i&gt;SGBDOR&lt;/i&gt;&lt;/a&gt; open source ficará por sua conta; recomendo fortemente a leitura da &lt;a href="http://sourceforge.net/projects/pgdocptbr/files/"&gt;documentação oficial do produto&lt;/a&gt;.&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;P&lt;/span&gt;&lt;/b&gt;rimeiramente vamos baixar o pacote de instalação, lembrando que as janelas de instalação no &lt;i&gt;Windows&lt;/i&gt; são idênticas as do &lt;i&gt;Linux&lt;/i&gt;, com isso, você poderá usar este mesmo artigo como referência para instalar o &lt;i&gt;PostgreSQL&lt;/i&gt; no &lt;i&gt;Windows&lt;/i&gt;, mudando apenas o pacote de instalação. Acesse a &lt;a href="http://www.postgresql.org/"&gt;home page do projeto&lt;/a&gt;, ou vá direto ao seguinte link:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #444444;"&gt;Link:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;i&gt;&lt;a href="http://www.enterprisedb.com/products/pgdownload.do#linux"&gt;www.enterprisedb.com/products/pgdownload.do&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
Baixe o arquivo conforme a figura a seguir:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_l1WyqtcRhYE/S1zijQ2e9OI/AAAAAAAABeU/UkJUewyGfXo/s1600-h/postgresql-site.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="207" src="http://2.bp.blogspot.com/_l1WyqtcRhYE/S1zijQ2e9OI/AAAAAAAABeU/UkJUewyGfXo/s400/postgresql-site.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Um mirror não oficial pode ser encontrado no link:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #444444;"&gt;Link:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;i&gt;&lt;a href="http://objectpascal.4shared.com/"&gt;objectpascal.4shared.com&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
O arquivo usado na instalação será este – &lt;i&gt;postgresql-8.4.2-1-linux.bin&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
Supondo que você salvou o arquivo em &lt;i&gt;/tmp&lt;/i&gt;, abra o terminal e execute os seguintes comandos:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #444444;"&gt;Comandos:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;pre&gt;&lt;i&gt;$ sudo chmod 777 /tmp/postgresql-8.4.2-1-linux.bin&lt;/i&gt;
&lt;i&gt;$ cd /tmp&lt;/i&gt;
&lt;i&gt;$ sudo ./postgresql-8.4.2-1-linux.bin&lt;/i&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;br /&gt;
Deverá aparecer uma janela como mostra a próxima figura:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_l1WyqtcRhYE/S1zjrBEkPTI/AAAAAAAABec/WWPXfl2bGpY/s1600-h/setup-postgresql-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="290" src="http://3.bp.blogspot.com/_l1WyqtcRhYE/S1zjrBEkPTI/AAAAAAAABec/WWPXfl2bGpY/s400/setup-postgresql-1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Use o botão &lt;i&gt;Next&lt;/i&gt; e prossiga a instalação. Irei resumir este artigo mostrando nas figuras a seguir os passos que usei para uma instalação com sucesso, adianto as seguintes informações sobre a instalação que fiz aqui:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Diretório onde será instalado o &lt;i&gt;PostgreSQL&lt;/i&gt; – &lt;i&gt;/opt/PostgreSQL/8.4&lt;/i&gt;;&lt;/li&gt;
&lt;li&gt;Diretório onde o &lt;i&gt;PostgreSQL&lt;/i&gt; irá salvar meus bancos de dados –&amp;nbsp; &lt;i&gt;/opt/PostgreSQL/8.4/data&lt;/i&gt;;&lt;/li&gt;
&lt;li&gt;Senha que usei – &lt;i&gt;postgres&lt;/i&gt;;&lt;/li&gt;
&lt;li&gt;Porta – &lt;i&gt;5432&lt;/i&gt;;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_l1WyqtcRhYE/S1zmCxjdcQI/AAAAAAAABek/rYtAzWCGJYM/s1600-h/setup-postgresql-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="291" src="http://3.bp.blogspot.com/_l1WyqtcRhYE/S1zmCxjdcQI/AAAAAAAABek/rYtAzWCGJYM/s400/setup-postgresql-2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_l1WyqtcRhYE/S1znJS5K9BI/AAAAAAAABes/VEMHwFEWn9A/s1600-h/setup-postgresql-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="291" src="http://2.bp.blogspot.com/_l1WyqtcRhYE/S1znJS5K9BI/AAAAAAAABes/VEMHwFEWn9A/s400/setup-postgresql-3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_l1WyqtcRhYE/S1znPw11gYI/AAAAAAAABe0/mZFx5BUgvqQ/s1600-h/setup-postgresql-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="291" src="http://3.bp.blogspot.com/_l1WyqtcRhYE/S1znPw11gYI/AAAAAAAABe0/mZFx5BUgvqQ/s400/setup-postgresql-4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_l1WyqtcRhYE/S1znaAZIdxI/AAAAAAAABe8/FQZ96QtDEiQ/s1600-h/setup-postgresql-5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="291" src="http://3.bp.blogspot.com/_l1WyqtcRhYE/S1znaAZIdxI/AAAAAAAABe8/FQZ96QtDEiQ/s400/setup-postgresql-5.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_l1WyqtcRhYE/S1znkA_jFyI/AAAAAAAABfE/TNj6pjM_rzw/s1600-h/setup-postgresql-6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="291" src="http://2.bp.blogspot.com/_l1WyqtcRhYE/S1znkA_jFyI/AAAAAAAABfE/TNj6pjM_rzw/s400/setup-postgresql-6.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_l1WyqtcRhYE/S1znyLcG6oI/AAAAAAAABfM/Pux76dDt7RA/s1600-h/setup-postgresql-7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="291" src="http://1.bp.blogspot.com/_l1WyqtcRhYE/S1znyLcG6oI/AAAAAAAABfM/Pux76dDt7RA/s400/setup-postgresql-7.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_l1WyqtcRhYE/S1zn4o4ddzI/AAAAAAAABfU/oUctEOT9B7k/s1600-h/setup-postgresql-8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="291" src="http://2.bp.blogspot.com/_l1WyqtcRhYE/S1zn4o4ddzI/AAAAAAAABfU/oUctEOT9B7k/s400/setup-postgresql-8.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_l1WyqtcRhYE/S1zn_1WjESI/AAAAAAAABfc/eCoxyWloUTU/s1600-h/setup-postgresql-9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="291" src="http://1.bp.blogspot.com/_l1WyqtcRhYE/S1zn_1WjESI/AAAAAAAABfc/eCoxyWloUTU/s400/setup-postgresql-9.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Chegando com êxito até aqui, o seu &lt;i&gt;PostgreSQL&lt;/i&gt; estará instalado! Agora acesse o menu gerado e abra o &lt;i&gt;pgAdmin III&lt;/i&gt;, conforme mostra a figura a seguir:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_l1WyqtcRhYE/S1zoPgyaoDI/AAAAAAAABfk/ZhXE_CJRYXE/s1600-h/pgadminIII-menu.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="381" src="http://3.bp.blogspot.com/_l1WyqtcRhYE/S1zoPgyaoDI/AAAAAAAABfk/ZhXE_CJRYXE/s400/pgadminIII-menu.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Acesse o banco de dados padrão do &lt;i&gt;PostgreSQL&lt;/i&gt;, usando as opções como mostram as imagens a seguir:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_l1WyqtcRhYE/S1zojG8CjMI/AAAAAAAABfs/M_MFdGGG9w0/s1600-h/pgadminIII.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/_l1WyqtcRhYE/S1zojG8CjMI/AAAAAAAABfs/M_MFdGGG9w0/s400/pgadminIII.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_l1WyqtcRhYE/S1zowslFmgI/AAAAAAAABf0/luLAKyLSuW4/s1600-h/pgadminIII-db.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="293" src="http://2.bp.blogspot.com/_l1WyqtcRhYE/S1zowslFmgI/AAAAAAAABf0/luLAKyLSuW4/s400/pgadminIII-db.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Caso ocorra erro de falta da lib "libpq.so", use o seguinte comando:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: #444444;"&gt;&lt;b&gt;Comando:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;hr /&gt;&lt;pre&gt;&lt;i&gt;$ sudo apt-get install libpq-dev&lt;/i&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Pronto, o &lt;i&gt;PostgreSQL&lt;/i&gt; esta perfeitamente instalado e configurado, use a documentação oficial e aproveite esse poderoso &lt;i&gt;SGBDOR&lt;/i&gt;.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Enjoy!&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://silvioclecio.blogspot.com/"&gt;Silvio Clécio&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_l1WyqtcRhYE/S1zpctEVo1I/AAAAAAAABf8/Q0Yejmvfkvs/s1600-h/pgadminIII-full.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/_l1WyqtcRhYE/S1zpctEVo1I/AAAAAAAABf8/Q0Yejmvfkvs/s400/pgadminIII-full.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Este artigo esta disponível para download em formato &lt;b&gt;PDF&lt;/b&gt; &lt;a href="http://sites.google.com/site/silvioprogbs/documentos/PostgreSQLnoUbuntu.pdf?attredirects=0&amp;amp;d=1"&gt;aqui&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&lt;span class="Apple-style-span" style="background-color: red;"&gt;Artigo atualizado em 15/02/2010&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891673720975914690-9074403131338446825?l=blog.silvioprog.com.br' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gtDSbgmmgqhGJui3Jyi8TF9E3eE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gtDSbgmmgqhGJui3Jyi8TF9E3eE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gtDSbgmmgqhGJui3Jyi8TF9E3eE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gtDSbgmmgqhGJui3Jyi8TF9E3eE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rURmBnri3WM:VCj106Ti_gc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rURmBnri3WM:VCj106Ti_gc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rURmBnri3WM:VCj106Ti_gc:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rURmBnri3WM:VCj106Ti_gc:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rURmBnri3WM:VCj106Ti_gc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=rURmBnri3WM:VCj106Ti_gc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rURmBnri3WM:VCj106Ti_gc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rURmBnri3WM:VCj106Ti_gc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=rURmBnri3WM:VCj106Ti_gc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rURmBnri3WM:VCj106Ti_gc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rURmBnri3WM:VCj106Ti_gc:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=rURmBnri3WM:VCj106Ti_gc:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rURmBnri3WM:VCj106Ti_gc:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rURmBnri3WM:VCj106Ti_gc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?i=rURmBnri3WM:VCj106Ti_gc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/silvioprog?a=rURmBnri3WM:VCj106Ti_gc:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/silvioprog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/silvioprog/~4/rURmBnri3WM" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2010-02-15T19:17:36.919-03:00</atom:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_l1WyqtcRhYE/S1zhVd-jKCI/AAAAAAAABeM/c6OD9Fb0Gck/s72-c/postgresql-8.4.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.silvioprog.com.br/2010/01/instalando-o-postgresql-no-ubuntu.html</feedburner:origLink></item></channel></rss>

