<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-19623256</id><updated>2012-01-20T09:29:34.693-04:00</updated><title type='text'>Porting to Lazarus</title><subtitle type='html'>This blog describes the porting of a medium-sized application (~250 kloc) from D7 to Lazarus. It uses PostgreSQL as database, and the connection is being ported from DB Express (D7) to SqlDB (Lazarus).</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>30</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-19623256.post-993944293570921466</id><published>2011-10-05T16:37:00.006-04:00</published><updated>2011-10-05T16:56:02.717-04:00</updated><title type='text'>Screenshot: Lazarus on Linux</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-uLT6werAyKo/TozCuPB2olI/AAAAAAAAAcU/4fWNb8ZTV0I/s1600/rnge3-laz-winxp.PNG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 169px;" src="http://1.bp.blogspot.com/-uLT6werAyKo/TozCuPB2olI/AAAAAAAAAcU/4fWNb8ZTV0I/s320/rnge3-laz-winxp.PNG" alt="" id="BLOGGER_PHOTO_ID_5660112931261948498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-jd0ewKnqLlQ/TozAQu1qjFI/AAAAAAAAAcM/vMn0S5eKzAE/s1600/rnge3-lazarus.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 169px;" src="http://3.bp.blogspot.com/-jd0ewKnqLlQ/TozAQu1qjFI/AAAAAAAAAcM/vMn0S5eKzAE/s320/rnge3-lazarus.png" alt="" id="BLOGGER_PHOTO_ID_5660110225381428306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Above, Lazarus 0.9.30-0 + FPC 2.4.2 editing &lt;a href="http://rednaxel.com/"&gt;Rednaxel&lt;/a&gt;'s ERP, RNGE 3, running on Windows XP (32-bit). Below, the same screenshot -- same project, same source code -- taken on  Ubuntu 10.10 (32-bit).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-993944293570921466?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/993944293570921466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=993944293570921466' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/993944293570921466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/993944293570921466'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2011/10/screenshot-lazarus-on-linux.html' title='Screenshot: Lazarus on Linux'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-uLT6werAyKo/TozCuPB2olI/AAAAAAAAAcU/4fWNb8ZTV0I/s72-c/rnge3-laz-winxp.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-9091350004012202373</id><published>2011-03-28T08:03:00.001-04:00</published><updated>2011-03-28T08:04:40.636-04:00</updated><title type='text'>Lazarus 0.9.30 released</title><content type='html'>The Lazarus team is glad to announce the &lt;a href="http://wiki.lazarus.freepascal.org/Lazarus_0.9.30_release_notes"&gt;0.9.30 release&lt;/a&gt;. This release&lt;br /&gt;is based on fpc 2.4.2.&lt;br /&gt;&lt;br /&gt;This release is available for download at the SourceForge download page:&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/lazarus/files/" target="_blank"&gt;http://sourceforge.net/&lt;wbr&gt;projects/lazarus/files/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Minimum requirements:&lt;br /&gt;Windows:       98, 2k, Vista, 7, 32 or 64bit&lt;br /&gt;FreeBSD/Linux: gtk 2.8 or qt4.5, 32 or 64bit&lt;br /&gt;Mac OS X:      10.4, LCL only 32bit, non LCL apps can be 64bit&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-9091350004012202373?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/9091350004012202373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=9091350004012202373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/9091350004012202373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/9091350004012202373'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2011/03/lazarus-0930-released.html' title='Lazarus 0.9.30 released'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-6093270097839865488</id><published>2011-01-21T08:27:00.005-04:00</published><updated>2011-01-28T08:53:12.764-04:00</updated><title type='text'>News from the front - again</title><content type='html'>The phasing out of the 2.x version (Delphi7) has begun. Version 3.0  (Lazarus) is being deployed and for a while both versions will co-exist.  The main module of the new version is the NFe (Nota Fiscal Eletrônica -  electronic invoice in XML according brazilian government  specifications) module.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_UToQCHoLvFo/TUK74GkLnGI/AAAAAAAAAaE/l-u3ZLMvPsk/s1600/rnge3-cadprod.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 218px;" src="http://4.bp.blogspot.com/_UToQCHoLvFo/TUK74GkLnGI/AAAAAAAAAaE/l-u3ZLMvPsk/s400/rnge3-cadprod.png" alt="" id="BLOGGER_PHOTO_ID_5567218661892791394" border="0" /&gt;&lt;/a&gt;The "price check" terminal mentioned in a former post was incorporated to RNGE3. Right now we're developing the next-generation SCM (Supply Chain Management) module; instead of a mere port, it's a major overhaul. We'll read the supplier's invoice directly from his NFe's XML, saving a huge time in the inventory control process.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-6093270097839865488?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/6093270097839865488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=6093270097839865488' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/6093270097839865488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/6093270097839865488'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2011/01/news-from-front.html' title='News from the front - again'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_UToQCHoLvFo/TUK74GkLnGI/AAAAAAAAAaE/l-u3ZLMvPsk/s72-c/rnge3-cadprod.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-591003813599975646</id><published>2010-10-11T08:52:00.003-04:00</published><updated>2010-11-10T07:32:33.646-04:00</updated><title type='text'>Installing Lazarus on Ubuntu 10.10</title><content type='html'>We are back! Now the OPF was fully ported to &lt;a href="http://zeos.firmos.at/"&gt;Zeoslib&lt;/a&gt; (sqldb had some issues) and the &lt;span style="font-style: italic;"&gt;Terminal de Consulta&lt;/span&gt; (Price Verifier) is being adapted. It's running on Linux machines for months now, it was a great field test. We started to use Ubuntu 10.10 here and today I made a clean install. Here's the steps to create a Lazarus development machine:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Install &lt;a href="http://www.ubuntu.com/desktop/get-ubuntu/download"&gt;Ubuntu 10.10 Desktop&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Install FPC 2.4.0 (with Synaptic or &lt;span style="font-weight: bold;"&gt;apt-get install fpc&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;Download &lt;a href="http://www.freepascal.org/down/source/sources.var"&gt;FPC sources&lt;/a&gt; (I prefer the .tar.gz file) to $HOME&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Uncompress them (&lt;span style="font-weight: bold;"&gt;tar -xvzf fpc-2.4.0.source.tar.gz&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;Install SVN software (&lt;span style="font-weight: bold;"&gt;sudo apt-get install subversion&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;Get Lazarus (&lt;span style="font-weight: bold;"&gt;svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;Build Lazarus with extra components (&lt;span style="font-weight: bold;"&gt;cd lazarus; make bigide&lt;/span&gt;)&lt;/li&gt;&lt;/ol&gt;If you need database connectivity, I suggest you use Zeoslib instead of the bundled sqldb component. Zeos is very mature and stable, to install it on Lazarus there are &lt;a href="http://wiki.lazarus.freepascal.org/Zeos_tutorial"&gt;some extra steps&lt;/a&gt;:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Get Zeos (&lt;span style="font-weight: bold;"&gt;svn checkout svn://zeos.firmos.at/zeos/trunk zeosdbo&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;Install Zeos (open &lt;span style="font-weight: bold;"&gt;zcomponent.lpk&lt;/span&gt; from Components/Open Package)&lt;/li&gt;&lt;/ol&gt;We also use &lt;a href="http://www.ararat.cz/synapse/doku.php/start"&gt;Synapse&lt;/a&gt; library and &lt;a href="http://acbr.sourceforge.net/"&gt;ACBr&lt;/a&gt; components, both from SVN.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-591003813599975646?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/591003813599975646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=591003813599975646' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/591003813599975646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/591003813599975646'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2010/10/installing-lazarus-on-ubuntu-1010.html' title='Installing Lazarus on Ubuntu 10.10'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-3549380218731489033</id><published>2009-12-23T10:25:00.001-04:00</published><updated>2010-07-23T10:39:37.986-04:00</updated><title type='text'>News from the front</title><content type='html'>&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;We&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;decided&lt;/span&gt; to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;postpone&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;port&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;until&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;main&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;development&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;of&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;current&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;version&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;was&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;over&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;probably&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;in&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;second&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;semester&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;of&lt;/span&gt; 2010. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;The&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;next&lt;/span&gt; major &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;version&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;will&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;be&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;written&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;entirely&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;in&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;Lazarus&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;using&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;our&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;updated&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;Code&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;Generator&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;with&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;updated&lt;/span&gt; Data &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;Model&lt;/span&gt; -- &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;that&lt;/span&gt;'s &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;being&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;upgraded&lt;/span&gt; to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;support&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;forthcoming&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;features&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;The&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;current&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;version&lt;/span&gt; is &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_49"&gt;written&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_50"&gt;in&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;Delphi&lt;/span&gt; 7 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_52"&gt;on&lt;/span&gt; a Windows XP virtual &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_53"&gt;machine&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_54"&gt;and&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_55"&gt;runs&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_56"&gt;smoothly&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_57"&gt;under&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_58"&gt;Wine&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_59"&gt;at&lt;/span&gt; 100+ &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_60"&gt;Ubuntu&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_61"&gt;boxes&lt;/span&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_62"&gt;There&lt;/span&gt;'s a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_63"&gt;need&lt;/span&gt; for a Windows &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_64"&gt;version&lt;/span&gt; too, as some &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_65"&gt;customers&lt;/span&gt; are &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_66"&gt;still&lt;/span&gt; Microsoft-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_67"&gt;only&lt;/span&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_68"&gt;Even&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_69"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_70"&gt;customers&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_71"&gt;that&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_72"&gt;moved&lt;/span&gt; to Linux &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_73"&gt;still&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_74"&gt;have&lt;/span&gt; some Windows &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_75"&gt;boxes&lt;/span&gt; for some &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_76"&gt;specific&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_77"&gt;tasks&lt;/span&gt; (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_78"&gt;like&lt;/span&gt; Internet &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_79"&gt;Banking&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_80"&gt;There&lt;/span&gt;'s a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_81"&gt;small&lt;/span&gt; module &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_82"&gt;that&lt;/span&gt;'s &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_83"&gt;been&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_84"&gt;written&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_85"&gt;in&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_86"&gt;Lazarus&lt;/span&gt; to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_87"&gt;test&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_88"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_89"&gt;Persistence&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_90"&gt;Framework&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_91"&gt;and&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_92"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_93"&gt;overall&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_94"&gt;development&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_95"&gt;and&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_96"&gt;deployment&lt;/span&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_97"&gt;We&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_98"&gt;had&lt;/span&gt; to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_99"&gt;set&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_100"&gt;up&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_101"&gt;ANOTHER&lt;/span&gt; virtual &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_102"&gt;machine&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_103"&gt;this&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_104"&gt;time&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_105"&gt;with&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_106"&gt;Ubuntu&lt;/span&gt; 32 bit, to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_107"&gt;build&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_108"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_109"&gt;application&lt;/span&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_110"&gt;We&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_111"&gt;need&lt;/span&gt; to compile 3 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_112"&gt;times&lt;/span&gt;: Windows XP, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_113"&gt;Ubuntu&lt;/span&gt; 32 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_114"&gt;and&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_115"&gt;Ubuntu&lt;/span&gt; 64. I'&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_116"&gt;ve&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_117"&gt;tried&lt;/span&gt; to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_118"&gt;set&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_119"&gt;up&lt;/span&gt; a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_120"&gt;cross&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_121"&gt;compiler&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_122"&gt;but&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_123"&gt;it&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_124"&gt;was&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_125"&gt;easier&lt;/span&gt; to use &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_126"&gt;another&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_127"&gt;VM&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-3549380218731489033?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/3549380218731489033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=3549380218731489033' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/3549380218731489033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/3549380218731489033'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2009/12/news-from-front.html' title='News from the front'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-7979867033395946097</id><published>2009-10-07T12:47:00.002-04:00</published><updated>2009-10-07T12:50:48.668-04:00</updated><title type='text'>Lazarus 0.9.28</title><content type='html'>It was released today, check the &lt;a href="http://wiki.lazarus.freepascal.org/Lazarus_0.9.28_release_notes"&gt;Release Notes&lt;/a&gt;. Lots of improvements and bugfixes, congratulations to everyone involved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-7979867033395946097?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/7979867033395946097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=7979867033395946097' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/7979867033395946097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/7979867033395946097'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2009/10/lazarus-0928.html' title='Lazarus 0.9.28'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-3018830210322317687</id><published>2009-10-06T10:32:00.007-04:00</published><updated>2011-02-01T12:22:17.591-04:00</updated><title type='text'>First module ported from Delphi to Lazarus</title><content type='html'>&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;"A journey of a thousand miles begins with a single step."&lt;/span&gt;&lt;br /&gt;Lao-tzu, The Way of Lao-tzu&lt;br /&gt;Chinese philosopher (604 BC - 531 BC)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;During the last year we were busy designing the next major version (3.x) of &lt;a href="http://www.rednaxel.com.br/rnge2"&gt;our ERP&lt;/a&gt;. Of course, the current version (2.x) is being maintained and improved. It's like that TV ad for EDS: we're &lt;a href="http://theinspirationroom.com/daily/2006/eds-airplane/"&gt;building a plane in the air&lt;/a&gt;. Our goal is to gradually port the ERP from Delphi 7 to Lazarus while we phase out the current version.&lt;br /&gt;&lt;br /&gt;This week we released the first ported module: "Terminal de Consulta" (Price Check Terminal). It's a two-form application that uses &lt;a href="http://wiki.lazarus.freepascal.org/SQLdb_Package"&gt;SQLdb&lt;/a&gt; (connecting to &lt;a href="http://www.postgresql.org/"&gt;PostgreSQL&lt;/a&gt;) and &lt;a href="http://synapse.ararat.cz/"&gt;Synapse&lt;/a&gt; (to get images from webservers). It's also a proof of concept, as it tests several key features.&lt;br /&gt;&lt;br /&gt;The SQLdb component is used in a potentially heavy query: the user can type the letter A, press ENTER and get all products with a letter A somewhere in the description (almost 30,000 items). The user can also use the barcode scanner to get basic information and F4 to get extra information (like the stock quantities in different stores). Pressing F4 requires authorization; if the current user is not authorized the application shows the second form, asking for a username/password.&lt;br /&gt;&lt;br /&gt;The Synapse library is used in two different ways: to show the customer's logo from &lt;a href="http://www.casadopapel.com.br/"&gt;their website&lt;/a&gt; (using a proxy if needed) and to show the product's image from a local webserver (no proxy).&lt;br /&gt;&lt;br /&gt;The price check module is being used for a couple days and the user's feedback is positive, as is the performance monitoring. The original module was improved with minor changes: we used bigger icons and made the interface more simple and straightforward during the port to Lazarus.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;Thanks to everyone and stay tuned for more on porting to Lazarus!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-3018830210322317687?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/3018830210322317687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=3018830210322317687' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/3018830210322317687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/3018830210322317687'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2009/10/first-module-ported-from-delphi-to.html' title='First module ported from Delphi to Lazarus'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-4982253442473884435</id><published>2008-10-05T17:04:00.001-04:00</published><updated>2009-10-05T17:05:29.997-04:00</updated><title type='text'>Lazarus 0.9.26</title><content type='html'>It's released, check the &lt;a href="http://wiki.lazarus.freepascal.org/Lazarus_0.9.26_release_notes"&gt;Release Notes&lt;/a&gt;. As a side note, I've found an interesting website called &lt;a href="http://www.freepascal.com.br/viewforum.php?f=11"&gt;Fórum Lazarus e Freepascal&lt;/a&gt; with a bulletin board in portuguese.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-4982253442473884435?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/4982253442473884435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=4982253442473884435' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/4982253442473884435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/4982253442473884435'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2008/10/lazarus-0926.html' title='Lazarus 0.9.26'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-7324727361132886229</id><published>2008-03-06T10:19:00.008-04:00</published><updated>2008-03-06T11:58:14.342-04:00</updated><title type='text'>It's all about freedom</title><content type='html'>Sometimes a line from a movie transcends the silver screen and becomes a proverb. In &lt;a href="http://www.starwars.com/episode-iv/"&gt;Star Wars Episode IV - A New Hope&lt;/a&gt; (1977), when the Galactic Empire captures Princess Leia Organa, they tortured her in order to get the location of Rebel Alliance's secret base. Admiral Tarkin then says: &lt;span style="font-style: italic;"&gt;"Princess Leia, before your execution, you will join me at a ceremony that will make this battle station operational. No star system will dare oppose the Emperor now."&lt;/span&gt; Her answer is now a legendary &lt;a href="http://www.imdb.com/title/tt0076759/quotes"&gt;movie quote&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;"The more you tighten your grip, Tarkin, the more star systems will slip through your fingers." (Princess Leia Organa)&lt;br /&gt;&lt;/blockquote&gt;This quote has been used, since then, as a proverb about freedom. When a government (or company) implements policies to supress or reduce freedom, people and customers start to circumvent these policies. There's a lot of webpages using this proverb in different contexts. A few examples:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://spaceofhollander.blogspot.com/2007/06/court-rebuffs-f.html"&gt;Hollander Space&lt;/a&gt; uses the quote in an article about the "indecency test" used by &lt;a href="http://www.fcc.gov/"&gt;FCC&lt;/a&gt; in order to fine broadcasters. He mentions a civil suit filed by four television networks (Fox, CBS, NBC and ABC) at the Court of Appeals for the Second Circuit in New York, where the Court decided against the government.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rigues.badcoffee.info/2007/07/23/harry-potter-e-o-elo-mais-fraco/"&gt;Bad Coffee&lt;/a&gt; uses it in an article about the leaking of the seventh book of Harry Potter's saga (&lt;a href="http://en.wikipedia.org/wiki/Harry_Potter_and_the_Deathly_Hallows"&gt;Harry Potter and the Deathly Hallows&lt;/a&gt;), despite of extreme security measures taken by the publisher.&lt;br /&gt;&lt;br /&gt;Michael Lambert, in his blog called &lt;a href="http://itinerate.blogspot.com/2006/01/more-you-tighten-your-grip.html"&gt;Ponderings of an Itinerate Programmer&lt;/a&gt;, mentions Leia's words in his post about the fight between consumers and two "evil empires": RIAA and MPAA. Both entities are suing consumers with charges of movie and music piracy over the Internet. &lt;a href="http://www.writingonyourpalm.net/column010903.htm"&gt;Jeff Kirvin&lt;/a&gt; also uses the very same quote in another article on the subject. This quote is considered an &lt;span style="font-style: italic;"&gt;"obligatory quote"&lt;/span&gt; at &lt;a href="http://slashdot.org/article.pl?sid=07/01/17/1354247"&gt;Slashdot when RIAA and MPAA are mentioned&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;An article on &lt;a href="http://www.stormpilot.us/article/landing_creative_marketing_projects_minus_desperation/"&gt;Storm Pilot website&lt;/a&gt; uses the quote as an advice for IT professionals when dealing with customers. The goal is to hide the excitement of a new prospect and the desperation for money: do NOT call the customer every day about a proposal you made.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/"&gt;Microsoft&lt;/a&gt; is also compared to the Galactic Empire using this quote. Danifer ran an &lt;a href="http://www.danifer.com/windows-vista-revisit"&gt;article about Windows Vista&lt;/a&gt; and complained about Microsoft Mail: &lt;span style="font-style: italic;"&gt;I’m extremely disappointed with Microsoft’s attempt to rule the email world by programming an application that refuses to play nicely with others. I’m reminded of Princess Leia’s quote from Star Wars “The more you tighten your grip, Tarkin, the more star systems will slip through your fingers.”&lt;/span&gt;&lt;span&gt; The author migrated to &lt;a href="http://www.mozilla.com/en-US/thunderbird/"&gt;Thunderbird&lt;/a&gt;, from Mozilla.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;John T. Kennedy wrote a &lt;a href="http://www.no-treason.com/archives/2006/10/03/the-good-news-about-the-online-gambling-ban/"&gt;piece about online gambling ban&lt;/a&gt; and said: &lt;span style="font-style: italic;"&gt;"The good news about this law is that the online gambling market isn’t going away. Entrepreneurs are not going to abandon the vast profits that have already been demonstrated. Internet markets are going to route around such legal obstacles. This law, if it is enforced, will spur efficient black markets like nothing ever has."&lt;/span&gt; John used the quote in a comment posted later.&lt;br /&gt;&lt;br /&gt;Even an article about Russia used Leia's words. Ben and Alice comment a story about the &lt;a href="http://benandalice.com/2006/05/more-you-tighten-your-grip-tarkin.html"&gt;Russian ban of Georgian and Moldovan wine and food&lt;/a&gt; imports, published by Moscow Times back in 2006. They quote Princess Leia just after quoting the original article: &lt;span style="font-style: italic;"&gt;"The Kremlin is consciously and systematically carrying out a policy of isolating itself across the former Soviet Union. The more pressure it puts on former Soviet republics, the more it hurries them into the arms of the West"&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;This is one of my favorite movie quotes. When you "tighten the grip", reducing the freedom of the people, the inevitable outcome is a failure. As soon as people get less freedom, they start to "slip through your fingers": if it's a country, many will try to escape; if it's a company, customers will look for competitors; if it's a market, the goods will be delivered by smugglers.&lt;br /&gt;&lt;br /&gt;It's all about freedom.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-7324727361132886229?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/7324727361132886229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=7324727361132886229' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/7324727361132886229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/7324727361132886229'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2008/03/its-all-about-freedom.html' title='It&apos;s all about freedom'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-1841561759482142259</id><published>2008-01-28T21:07:00.000-04:00</published><updated>2008-01-28T22:21:16.775-04:00</updated><title type='text'>Native widgets vs GUI toolkits</title><content type='html'>When developing cross-platform applications we have a basic decision to make: use a &lt;span style="font-style: italic;"&gt;wrapper&lt;/span&gt; like &lt;a href="http://www.wxwidgets.org"&gt;wxWidgets&lt;/a&gt; (C/C++) or &lt;a href="http://lazarus.freepascal.org"&gt;Lazarus/LCL&lt;/a&gt; (Pascal) or use a GUI toolkit like &lt;a href="http://www.fltk.org"&gt;FLTK&lt;/a&gt; (C/C++) or &lt;a href="http://opensoft.homeip.net/fpgui/"&gt;fpGUI&lt;/a&gt; (Pascal). The wrapper relies in the underlying API of the host desktop environment (Win32, Mac OS X, GTK+, X11, Motif, etc) in order to draw its widgets; the toolkit draws the widgets by itself, emulating the native GUI.&lt;br /&gt;&lt;br /&gt;There is a &lt;a href="http://www.mail-archive.com/lazarus@miraclec.com/msg22144.html"&gt;very interesting thread&lt;/a&gt; about this topic on Lazarus mailing list.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-1841561759482142259?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/1841561759482142259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=1841561759482142259' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/1841561759482142259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/1841561759482142259'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2008/01/native-widgets-vs-gui-toolkits.html' title='Native widgets vs GUI toolkits'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-8590609242407259643</id><published>2007-11-13T12:22:00.000-04:00</published><updated>2008-01-28T21:06:36.601-04:00</updated><title type='text'>Living alone</title><content type='html'>(This is an &lt;a href="http://www.culturainglesa.net"&gt;English&lt;/a&gt; homework).&lt;br /&gt;&lt;br /&gt;Back in the early 90's I lived alone. Well, actually I had my sister as flatmate, but she had her own bedroom and was never at home, as she spent most of her time at her boyfriend's place. Nevertheless, it was a good way to assess the pros and cons of living alone. After two years of experience it's even possible to write a few lines on the subject.&lt;br /&gt;&lt;br /&gt;It's obvious that the main advantage is the liberty. You can bring in your friends, your girlfriend (or boyfriend if you prefer), have a party any day without having to ask your parents. You can do whatever you please as long as you do not disturb your neighbours. On the other hand, this also means that you need to do all the house keeping: if you leave a glass in the sink, it will stay there forever unless you wash it. Some people claim that only after living alone they realize that the fridge does not get filled magically, the clothes don't get washed by themselves and the bills need to be actually paid.&lt;br /&gt;&lt;br /&gt;As a result, you are forced to be very independent. After living alone, even a few blocks from your parent's home (and it was my case), it's easier to break the bonds and move to another city, another state, another country. Nevertheless, precisely because all kids eventually grow and this departure is inevitable, the parents should delegate tasks for the children since they are very young, as a preparation for the adulthood. The mother that crawls after her kids picking dirty clothes from the floor is raising spoiled children.&lt;br /&gt;&lt;br /&gt;It could be argued that one may feel very lonely living alone. This is partly true as most of the time you are at home there's nobody else to talk with. However, if you work full-time and study, this may be a bless as you probably arrive home late at night and usually all you want is go to the bed. But in spite of this, it's up to you to have a healthy social life. Some prefer to hang out with friends, others prefer to watch a movie home alone. Nowadays the Internet can be a great way to stay in touch with friends and relatives.&lt;br /&gt;&lt;br /&gt;There's a trend called &lt;a href="http://en.wikipedia.org/wiki/Boomerang_Generation"&gt;Boomerang Generation&lt;/a&gt;, that refers to the young adults that choose to move back home with their parents after a brief period of living on their own, usually college, or to never move out in the first place. &lt;span id="nointelliTXT"&gt;&lt;/span&gt;Other countries have adopted similar slang to represent this domestic phenomenon. In Italy, the term &lt;span style="font-style: italic;"&gt;mammon&lt;/span&gt;, or "mama's boys" is used, while the Japanese refer to them as &lt;span style="font-style: italic;"&gt;parasaito shinguru&lt;/span&gt;, or "parasite singles". In UK, they are known as &lt;a href="http://www.investopedia.com/terms/k/kippers.asp"&gt;KIPPERS&lt;/a&gt; (&lt;span id="nointelliTXT"&gt;Kids In Parents' Pockets Eroding Retirement Savings).&lt;/span&gt;&lt;br /&gt;&lt;span id="nointelliTXT"&gt;&lt;br /&gt;&lt;/span&gt;To conclude, it's clear that living alone is a good thing for most young adults. Eventually every children will leave the security of the family home to start their own lives. Although both kids and parents are sure to worry, it's important to realize that this is just another passage in the growing-up process.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-8590609242407259643?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/8590609242407259643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=8590609242407259643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/8590609242407259643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/8590609242407259643'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2007/11/living-alone.html' title='Living alone'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-868570435739625117</id><published>2007-07-31T16:10:00.000-04:00</published><updated>2007-07-31T16:17:20.881-04:00</updated><title type='text'>Back from the dead</title><content type='html'>After a few months without updates, the porting project is back. Now we are going to port our Point-Of-Sale (POS) module to Lazarus, to avoid Wine's problems with serial communication. We will use the &lt;a href="http://acbr.sourceforge.net"&gt;ACBr component&lt;/a&gt; set. The other modules will remain coded in Delphi (running under Wine on Linux).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-868570435739625117?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/868570435739625117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=868570435739625117' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/868570435739625117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/868570435739625117'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2007/07/back-from-dead.html' title='Back from the dead'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-115816858117887346</id><published>2006-09-13T13:25:00.000-04:00</published><updated>2007-08-06T15:27:34.237-04:00</updated><title type='text'>Why Delphi Win32 is important</title><content type='html'>Delphi Win32 is important because of Linux.&lt;br /&gt;&lt;br /&gt;Right now it is one of the best options for cross-platform development. &lt;a href="http://delphi-notes.blogspot.com/2005/08/kylix-is-dead-now.html"&gt;Kylix is dead&lt;/a&gt; (correct me if I am wrong); &lt;a href="http://www.lazarus.freepascal.org/"&gt;Lazarus&lt;/a&gt; is not ready yet (but it's on the way); &lt;a href="http://www.mono-project.com/"&gt;Mono&lt;/a&gt; is &lt;a href="http://svn.myrealbox.com/blog/"&gt;not good enough yet&lt;/a&gt; (and is doomed to play catch with Microsoft .NET). Other portable options (Java/GTK/QT/etc) don't have a nice RAD environment like Delphi.&lt;br /&gt;&lt;p&gt;On the other hand, &lt;a href="http://www.winehq.com/"&gt;WINE&lt;/a&gt; has evolved (in the last years) enough to run most Win32 applications written in Delphi 7 or less. If the developer avoids certain problematic components, it runs 100% fine. Faster than Java, more complete than Mono, easier to code than GTK / QT / whatever. Been there, done that.&lt;br /&gt;&lt;/p&gt;Many software solutions these days are web applications - cross-platform by design. For the few cases where you can't run in a browser, a Delphi Win32 application running under Wine is an excellent solution. This way you can please both markets easily.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-115816858117887346?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/115816858117887346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=115816858117887346' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/115816858117887346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/115816858117887346'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2006/09/why-delphi-win32-is-important.html' title='Why Delphi Win32 is important'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-115754805789737156</id><published>2006-09-06T08:56:00.001-04:00</published><updated>2006-09-06T09:07:37.910-04:00</updated><title type='text'>ACBr and Wine</title><content type='html'>We are replacing our custom-made ECF (&lt;span style="font-style: italic;"&gt;Emissor de Cupom Fiscal&lt;/span&gt;) component. The new versions will use &lt;a href="http://acbr.sourceforge.net"&gt;ACBr&lt;/a&gt;. In other news, the software now runs almost perfectly under Wine. There's no speed issues - it's faster under Wine than it would be if it was written in .NET or Java.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-115754805789737156?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/115754805789737156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=115754805789737156' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/115754805789737156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/115754805789737156'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2006/09/acbr-and-wine_06.html' title='ACBr and Wine'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-115074867360659489</id><published>2006-06-19T16:15:00.000-04:00</published><updated>2007-10-10T15:20:37.985-04:00</updated><title type='text'>Porting status</title><content type='html'>The porting is officially paused.&lt;br /&gt;&lt;br /&gt;In the last few months, a number of changes were made to the main project (written in Delphi) in order to help the porting to Lazarus - mostly the replacement of problematic components. These changes, helped by recent versions of &lt;a href="http://www.winehq.org/"&gt;Wine&lt;/a&gt;, improved immensely the emulation under Linux. Right now the software runs smoothly under Wine for 99% of the user profiles.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-115074867360659489?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/115074867360659489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=115074867360659489' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/115074867360659489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/115074867360659489'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2006/06/porting-status.html' title='Porting status'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-114303278081109111</id><published>2006-03-22T08:47:00.000-04:00</published><updated>2006-03-22T09:10:52.733-04:00</updated><title type='text'>StrToDateDef, RoundTo and BoolToStr</title><content type='html'>Delphi has 2 functions not present in FPC:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;function StrToDateDef(const S: string; const Default: TDateTime): TDateTime;&lt;/span&gt;&lt;br /&gt;   &lt;span style="font-family: courier new;"&gt;function RoundTo(const AValue: Double; const ADigit: TRoundToRange): Double;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;The first one tries to convert String to TDateTime, and if the conversion fails, the result is the value informed at the Default parameter. The second one does banker's rounding to a given precision, informed in power of ten. To round to cents, you need to pass -2, as 10 ^ -2 is 1/100.&lt;br /&gt;&lt;br /&gt;There's another function that is present but has different behaviour. It's &lt;span style="font-weight: bold;"&gt;BoolToStr&lt;/span&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//--- Delphi's BoolToStr&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;function BoolToStr(B: Boolean; UseBoolStrs: Boolean = False): string;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;If UseBoolStrs is false (the default), it returns '-1' for true and&lt;br /&gt;'0' for false. If UseBoolStrs is true, it returns the strings 'TRUE'&lt;br /&gt;and 'FALSE'. In Free Pascal it's like this:&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;pre&gt;//--- in objpas/sysutils/sysstr.inc&lt;br /&gt;function BoolToStr(B: Boolean): string;&lt;br /&gt;begin&lt;br /&gt;  If B then&lt;br /&gt;    Result:='TRUE'&lt;br /&gt;  else&lt;br /&gt;    Result:='FALSE';&lt;br /&gt;end;&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;So a call to &lt;span style="font-weight: bold;"&gt;BoolStr(true)&lt;/span&gt; would return '-1' in Delphi and 'TRUE' in FPC. I don't know if it was pointed before, and I agree that returning 'TRUE' makes a lot of sense, but when porting an application this may lead to trouble. A simple "fix" would be add an extra boolean parameter, with the default value of true:&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;//--- in objpas/sysutils/sysstr.inc&lt;br /&gt;function BoolToStr(B: Boolean; TF: Boolean = true): string;&lt;br /&gt;begin&lt;br /&gt;  If TF then&lt;br /&gt;    begin&lt;br /&gt;     If B then&lt;br /&gt;         Result:='TRUE'&lt;br /&gt;     else&lt;br /&gt;         Result:='FALSE';&lt;br /&gt;     end&lt;br /&gt;  else&lt;br /&gt;    begin&lt;br /&gt;     If B then&lt;br /&gt;          Result:='-1'&lt;br /&gt;      else&lt;br /&gt;          Result:='0';&lt;br /&gt;    end;&lt;br /&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Of course, some may oppose to this change, as it would be a hack made just in order to keep Delphi compatibility.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-114303278081109111?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/114303278081109111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=114303278081109111' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/114303278081109111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/114303278081109111'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2006/03/strtodatedef-roundto-and-booltostr.html' title='StrToDateDef, RoundTo and BoolToStr'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-114245303085053685</id><published>2006-03-15T15:49:00.000-04:00</published><updated>2006-03-15T16:03:50.876-04:00</updated><title type='text'>MDI, qtintf70.dll, launcher... all gone</title><content type='html'>Several changes has been made in the last few weeks. I also managed to actually convert and open the &lt;span style="font-style: italic;"&gt;entire &lt;/span&gt;project on &lt;a href="http://www.lazarus.freepascal.org/"&gt;Lazarus &lt;/a&gt;- as expected, it's not compiling yet. The major changes are:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;No more MDI: all remaining MDI Forms are now converted to SDI;&lt;br /&gt;  &lt;/li&gt;   &lt;li&gt;No more &lt;span style="font-style: italic;"&gt;qtintf70.dll&lt;/span&gt; dependency: after a complete cleaning, no more QT Units are being used. There were a couple QTypes that were missed in the automated CLX - VCL conversion;&lt;/li&gt;   &lt;li&gt;No more Launcher: the old launcher checks if there's a newer version in a given web server, and using Indy it downloads it; after that it runs the application. Now the own client app does that (using &lt;a href="http://www.ararat.cz/synapse/"&gt;Synapse&lt;/a&gt;), calling an external program only if there IS a new version (the external program, already a Lazarus application, only swaps the downloaded file with the file that were being run).&lt;/li&gt; &lt;/ul&gt; Now I'll focus in the conversion, in order to actually get the project compiled. I know that get it compiled and get it working are two very different things, but hey, I own the damn &lt;a href="http://www.rednaxel.com.br/"&gt;company&lt;/a&gt;. There's no deadline: it's ready when it's ready!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-114245303085053685?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/114245303085053685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=114245303085053685' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/114245303085053685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/114245303085053685'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2006/03/mdi-qtintf70dll-launcher-all-gone.html' title='MDI, qtintf70.dll, launcher... all gone'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-114157760369846612</id><published>2006-03-05T12:47:00.000-04:00</published><updated>2006-03-05T12:53:23.760-04:00</updated><title type='text'>Lazarus 0.9.12</title><content type='html'>This release is based on FPC 2.0.2 and the binary packages now contain many standard packages: RunTimeTypeInfoControls, Printer4Lazarus, CGILaz, CGILazIDE, MemDSLaz, SDFLaz, TurboPowerIPro, JPEGForLazarus, FPCUnitTestRunner, FPCUnitIDE and ProjTemplates.&lt;br /&gt;&lt;br /&gt;Here are the &lt;a href="http://www.lazarus.freepascal.org/modules.php?op=modload&amp;name=News&amp;amp;file=article&amp;sid=107&amp;amp;mode=thread&amp;order=0&amp;amp;thold=0"&gt;full announcement&lt;/a&gt; and the &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=89339"&gt;download page&lt;/a&gt;. Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-114157760369846612?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/114157760369846612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=114157760369846612' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/114157760369846612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/114157760369846612'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2006/03/lazarus-0912.html' title='Lazarus 0.9.12'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-113828497868950932</id><published>2006-01-26T10:00:00.000-04:00</published><updated>2006-01-26T10:16:18.703-04:00</updated><title type='text'>Converting a MDI form to SDI</title><content type='html'>In the Form itself:&lt;br /&gt;&lt;ol&gt;   &lt;li&gt;Change FormStyle property to fsNormal;&lt;/li&gt;   &lt;li&gt;Change Visible property to False;&lt;/li&gt;   &lt;li&gt;Remove the line "Action := caFree;" from OnClose event;&lt;/li&gt;   &lt;li&gt;Change property Position to poDesktopCenter or something else (optional);&lt;/li&gt;   &lt;li&gt;Override CreateParams to add extra funcionality, like make it have a button on taskbar or make it become indepent from the main form (optional);&lt;/li&gt; &lt;/ol&gt;&lt;br /&gt;In the caller Forms:&lt;br /&gt;&lt;ol&gt;   &lt;li&gt;Change "Application.CreateForm(FormClass,FormName)" to FormName.Show;&lt;/li&gt; &lt;/ol&gt;&lt;br /&gt;In the Project Options, tab "Forms":&lt;br /&gt;&lt;ol&gt;   &lt;li&gt;Move the Form from "Available" list to "Auto-create" list (if needed);&lt;/li&gt; &lt;/ol&gt; That's it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-113828497868950932?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/113828497868950932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=113828497868950932' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113828497868950932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113828497868950932'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2006/01/converting-mdi-form-to-sdi.html' title='Converting a MDI form to SDI'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-113753036254280378</id><published>2006-01-17T16:13:00.000-04:00</published><updated>2006-01-17T16:39:22.556-04:00</updated><title type='text'>MDI x SDI</title><content type='html'>My project has several MDI forms. Right now I'm studying the conversion of all MDI forms to SDI, not only because Lazarus does not support MDI, but also for usability &lt;a href="http://www.pixelcentric.net/x-shame/docs.html"&gt;issues&lt;/a&gt;. I've read several sources basically stating that MDI is harmful - and for what I see in daily basis, I agree. Here I quote Joel Spolsky (from the &lt;a href="http://www.joelonsoftware.com"&gt;www.joelonsoftware.com&lt;/a&gt; site):&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Here are the usability problems people have with MDI:&lt;br /&gt; &lt;br /&gt;* They accidentally minimize a child window, e.g. by double clicking it's title bar, and don't know what they've done. Then they think the other windows are lost.&lt;br /&gt; &lt;br /&gt;* They get into a state where the child windows are not even visible because the main window is too small or scrolled away, and don't know what they've done. Then they think the window is lost, and choosing it from the Window list does nothing.&lt;br /&gt; &lt;br /&gt;* They close the app when they meant to close a child window because the X's icons are so close.&lt;br /&gt; &lt;br /&gt;There are a whole range of other pathologies. Programmers are very logical people and understand MDI quickly. Most end users just don't get it and usability on these apps is terrible.&lt;br /&gt; &lt;br /&gt;Joel Spolsky&lt;br /&gt;Wednesday, January 16, 2002&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;What can I say? He's damn right: been there, done that. Porting my project to Lazarus will be a hell of a excuse to get rid of MDI for good.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-113753036254280378?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/113753036254280378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=113753036254280378' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113753036254280378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113753036254280378'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2006/01/mdi-x-sdi.html' title='MDI x SDI'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-113642715262153150</id><published>2006-01-04T21:49:00.000-04:00</published><updated>2006-01-04T22:12:32.630-04:00</updated><title type='text'>FPC 2.0.2 and postgresql3dyn</title><content type='html'>The &lt;a href="http://www.freepascal.org/down/i386/win32.html"&gt;Win32 binary installation&lt;/a&gt; of FPC 2.0.2 does not have the postgresql3dyn unit. This unit is not needed in order to compile Lazarus itself, but it IS needed by &lt;a href="http://wiki.lazarus.freepascal.org/index.php/Lazarus_DB_Faq"&gt;sqldb&lt;/a&gt;. Once Lazarus needs the FPC sources for some features, and most people have them, it's easy to solve this problem.&lt;br /&gt;&lt;br /&gt;Considering the FPC binaries AND sources are in C:\FPC\2.0.2:&lt;br /&gt;&lt;br /&gt;1. mkdir C:\FPC\2.0.2\units\i386-win32\postgres&lt;br /&gt;2. cd C:\FPC\2.0.2\packages\base\postgres&lt;br /&gt;3. make&lt;br /&gt;4. copy units\i386-win32\* C:\FPC\2.0.2\units\i386-win32\postgres&lt;br /&gt;&lt;br /&gt;Thanks giantm from #lazarus-ide channel for the help. If the step 3 does not work, probably the Delphi's make is being called instead of GNU's - if Delphi was installed BEFORE Lazarus, its bin directory is in Windows PATH environment variable. To solve it, I renamed make.exe from Delphi to make_delphi.exe; other way to do the same is using:&lt;br /&gt;&lt;br /&gt;3. C:\FPC\2.0.2\bin\i386-win32\make.exe&lt;br /&gt;&lt;br /&gt;As usual, YMMV.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-113642715262153150?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/113642715262153150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=113642715262153150' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113642715262153150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113642715262153150'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2006/01/fpc-202-and-postgresql3dyn.html' title='FPC 2.0.2 and postgresql3dyn'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-113592390353203146</id><published>2005-12-29T18:15:00.000-04:00</published><updated>2005-12-30T02:28:18.630-04:00</updated><title type='text'>From CLX to VCL</title><content type='html'>Back in 2002, when the project was being designed, it was meant to be cross-platform (well, at least Windows and Linux on i386). The choice was Delphi/Kylix; instead of VCL, we used CLX from day one. This was bad - because &lt;a href="http://delphi-notes.blogspot.com/2005/08/kylix-is-dead-now.html"&gt;Kylix is dead&lt;/a&gt; by now - but also good, because we were forced to code in a cleaner way - no Windows API calls, very few third-party components, etc.&lt;br /&gt;&lt;br /&gt;Coding for both Delphi and Kylix was an {$IFDEF} nightmare. Most coding was being done in Delphi, under Windows, and everytime we fired up Kylix to compile a Linux version, a lot of changes were needed. Then, early this year, some customers started to try the win32 program under Wine, getting very good results. With little effort we made it work 100% under Wine, and it became clear that it was easier to run the application under Wine than code for Kylix.&lt;br /&gt;&lt;br /&gt;The CLX is very buggy (and slow); a couple months ago we started to port to VCL. We also evaluated the possibility of porting directly from CLX to Lazarus, but our studies have shown it would be a huge step. So we decided to port to VCL first. A tool was used for this task: &lt;a href="http://www.delphibr.com.br/artigos/ConvertFiles.php"&gt;Convert Files&lt;/a&gt;, by Dennys dos Santos Sobrinho. As expected, the conversion did not worked in the first try; a lot of changes were needed and we could not afford to mantain a branch just for this task. So we decided to gradually reduce the gap, by removing obstacles at each official release.&lt;br /&gt;&lt;br /&gt;It was a major &lt;a href="http://en.wikipedia.org/wiki/Refactoring"&gt;refactoring&lt;/a&gt; task - a lot of code was rewritten, third-party components were replaced with standard ones (new code was needed to accomplish the missing features), points of conflict of method signatures between CLX and VCL were concentrated in fewer places, xpm icons were replaced by bmp, png or ico files, etc. Every week we tried the conversion process with the current codebase; the gap was becoming small.&lt;br /&gt;&lt;br /&gt;And today, at last, we managed to get a working VCL port! It's a lot faster (at least 3 x), a lot of CLX bugs are gone (mouse scroll works now, form focus is not crazy anymore, etc) and with XP Manifest the project got a nicer look under Windows. Of course the entire project needs some revision to fix minor visual glitches, but overall it's working. We plan to issue an official VCL release in a couple weeks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-113592390353203146?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/113592390353203146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=113592390353203146' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113592390353203146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113592390353203146'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2005/12/from-clx-to-vcl.html' title='From CLX to VCL'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-113560456048981407</id><published>2005-12-26T09:36:00.000-04:00</published><updated>2005-12-26T09:42:40.500-04:00</updated><title type='text'>Installing Lazarus on [K] Ubuntu 5.10</title><content type='html'>1. Download the Free Pascal Compiler:&lt;br /&gt;&lt;a href="http://www.freepascal.org/down/i386/linux.html"&gt;http://www.freepascal.org/down/i386/linux.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.freepascal.org/down/source/sources.html"&gt;http://www.freepascal.org/down/source/sources.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. Execute install script for FPC (use all defaults, installs to /usr/local)&lt;br /&gt;&lt;br /&gt;3. Untar (tar -xvzf) the sources into /usr/local/src&lt;br /&gt;&lt;br /&gt;4. Install (with "sudo apt-get install"):&lt;br /&gt;build-essential&lt;br /&gt;subversion&lt;br /&gt;libglib1.2-dev&lt;br /&gt;libgnome-dev&lt;br /&gt;libgdk-pixbuf-dev&lt;br /&gt;&lt;br /&gt;5. &lt;a href="http://lazarus-ccr.sourceforge.net/kb/index.php/Getting_Lazarus"&gt;Get Lazarus&lt;/a&gt; with Subversion (SVN)&lt;br /&gt;svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus&lt;br /&gt;(from now on, change to lazarus directory and run "svn update")&lt;br /&gt;&lt;br /&gt;6. Build (use only "make" to build with GTK1 widgetset)&lt;br /&gt;make LCL_PLATFORM=gtk2&lt;br /&gt;&lt;br /&gt;That's it. &lt;a href="http://en.wikipedia.org/wiki/YMMV"&gt;YMMV&lt;/a&gt;, of course.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-113560456048981407?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/113560456048981407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=113560456048981407' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113560456048981407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113560456048981407'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2005/12/installing-lazarus-on-k-ubuntu-510.html' title='Installing Lazarus on [K] Ubuntu 5.10'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-113501418701693182</id><published>2005-12-19T13:34:00.000-04:00</published><updated>2005-12-19T13:44:28.616-04:00</updated><title type='text'>Indy or  Synapse?</title><content type='html'>After trying Indy 4 Lazarus without success, I was told (thanks again, jesusrmx) to try Synapse's HTTP functions (from the HttpSend unit). I've been using &lt;a href="http://www.ararat.cz/synapse/"&gt;Synapse&lt;/a&gt; for serial communication, but I was not aware of its HTTP features. I was gladly surprised: it's almost as easy as TIdHTTP and is officially supported on Lazarus.&lt;br /&gt;&lt;br /&gt;Now I'll finally port the "Auto Updater" from my project. The preliminary tests were excellent, and as soon as I finish it, there will be another post here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-113501418701693182?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/113501418701693182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=113501418701693182' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113501418701693182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113501418701693182'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2005/12/indy-or-synapse.html' title='Indy or  Synapse?'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-113474113097730716</id><published>2005-12-16T09:45:00.000-04:00</published><updated>2005-12-16T09:52:10.983-04:00</updated><title type='text'>More on Auto Update</title><content type='html'>The Auto Update feature uses &lt;a href="http://www.indyproject.org"&gt;Indy&lt;/a&gt;'s TIdHTTP. There's an effort to port &lt;a href="http://indy4lazarus.sourceforge.net"&gt;Indy for Lazarus&lt;/a&gt;, but the Sourceforge file is a bit outdated (almost two years old). So I started to search for alternatives, just in case. I've found &lt;a href="http://wiki.lazarus.freepascal.org/index.php/LNet"&gt;LNet&lt;/a&gt; (LightWeight Networking Library), written by Ales Katona. In the next days I'll try them all and decide which one the project will use.&lt;br /&gt;&lt;br /&gt;Update: after some chatting on #lazarus-ide, I managed to download a newer version of indy4lazarus. I'll test it soon and post here the results.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-113474113097730716?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/113474113097730716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=113474113097730716' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113474113097730716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113474113097730716'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2005/12/more-on-auto-update.html' title='More on Auto Update'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-113440383980050794</id><published>2005-12-12T11:07:00.000-04:00</published><updated>2005-12-12T12:10:40.766-04:00</updated><title type='text'>Auto update</title><content type='html'>The RNGE system has an auto update feature. An application launcher checks the Version Info data from each EXE against the configurations files on the server; if the versions are different, the launcher downloads the version from the server and overwrites the version on the client.&lt;br /&gt;&lt;br /&gt;However this depends on Windows API in order to get the Version Info from the binaries, therefore a crossplatform solution is needed. &lt;span style="font-weight: bold;"&gt;Joran&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;fpcfan&lt;/span&gt; from #lazarus-ide channel (at &lt;a href="http://freenode.net"&gt;Freenode&lt;/a&gt;) gave me the idea of using a POSIX compliant command-line argument: --version.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-113440383980050794?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/113440383980050794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=113440383980050794' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113440383980050794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113440383980050794'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2005/12/auto-update.html' title='Auto update'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-113426834289816220</id><published>2005-12-10T21:48:00.001-04:00</published><updated>2009-10-05T17:11:05.352-04:00</updated><title type='text'>OnPrepareCanvas</title><content type='html'>The 200 kloc project I'm porting uses only a few third-party CLX components on Delphi 7. The most used by far are &lt;a href="http://www.tmssoftware.com/qadvgrid.htm"&gt;TAdvStringGrid&lt;/a&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;(Advanced String Grid) and &lt;a href="http://synapse.ararat.cz/"&gt;Synapse&lt;/a&gt; (serial communication). The latter is already ported to Lazarus, so I focused on the standard &lt;span style="font-weight: bold;"&gt;TStringGrid&lt;/span&gt; from LCL.&lt;br /&gt;&lt;br /&gt;In my code, the event &lt;span style="font-weight: bold;"&gt;OnGetCellColor &lt;/span&gt;(from &lt;span style="font-weight: bold;"&gt;TAdvStringGrid&lt;/span&gt;) is used to change the look of the Cell depending on some conditions. The &lt;span style="font-weight: bold;"&gt;AlternateColor &lt;/span&gt;property&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;solved part of my problems, but I needed to check the Cell's content before it's drawn. Then, after a few searches, I've found &lt;a href="http://www.lazarus.freepascal.org/index.php?name=PNphpBB2&amp;file=viewtopic&amp;amp;t=286"&gt;OnPrepareCanvas&lt;/a&gt;. A simple code to put negative numbers in red looks like this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;procedure TForm1.StringGrid1PrepareCanvas(sender: TObject;&lt;br /&gt;Col, Row: Integer; aState: TGridDrawState);&lt;br /&gt;begin&lt;br /&gt;if not (gdfixed in aState) then&lt;br /&gt; if Pos('-',StringGrid1.Cells[Col,Row]) = 0 then begin&lt;br /&gt;   StringGrid1.Canvas.Font.Color := clBlue;&lt;br /&gt; end else begin&lt;br /&gt;   StringGrid1.Canvas.Font.Color := clRed;&lt;br /&gt; end;&lt;br /&gt;end;&lt;br /&gt;&lt;/pre&gt;The standard &lt;span style="font-weight: bold;"&gt;TStringGrid &lt;/span&gt;from LCL has all I need: the project is one step closer to be ported. Thanks Jesus Reyes Aguilar for the great work!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-113426834289816220?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/113426834289816220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=113426834289816220' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113426834289816220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113426834289816220'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2005/12/onpreparecanvas.html' title='OnPrepareCanvas'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-113414758258330125</id><published>2005-12-09T12:57:00.000-04:00</published><updated>2005-12-09T13:07:56.503-04:00</updated><title type='text'>Lazarus 0.9.10</title><content type='html'>It was released at October, 3. I'll make a post at every release.&lt;br /&gt;&lt;a href="http://sourceforge.net/project/showfiles.php?group_id=89339"&gt;http://sourceforge.net/project/showfiles.php?group_id=89339&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The latest snapshot is here:&lt;br /&gt;&lt;a href="http://www.de.freepascal.org/lazarus/"&gt;http://www.de.freepascal.org/lazarus/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The current snapshot (as of December, 9) is Lazarus-0.9.11-20051209. The warning in the web page is scary: "These snapshots are generated automatically and are untested. The only thing we can say is, that the compiler found the source good enough to compile. These snapshots are provided as a courtesy only. If they don't work, too bad! If they destroy your project files, crash your machine, and eat your disk: Tough luck! (just to say that YOU ARE USING COMPLETELY UNTESTED SOFTWARE)".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-113414758258330125?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/113414758258330125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=113414758258330125' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113414758258330125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113414758258330125'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2005/12/lazarus-0910.html' title='Lazarus 0.9.10'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-113391430662822858</id><published>2005-12-06T20:03:00.000-04:00</published><updated>2005-12-06T20:11:46.636-04:00</updated><title type='text'>Day 1 - First issues</title><content type='html'>- DB Express has a TStringList named Params; all databases use it, so to access PostgreSQL (the DB I use) there were a line &lt;span style="font-style: italic;"&gt;DriverName := 'PostgreSQL'&lt;/span&gt;. Using SqlDB, I used the TPQConnection component, and the parameters are now properties.&lt;br /&gt;&lt;br /&gt;- My OPF has an option to trim the strings it gets from (or write to) the DB. It used Trim(X) where X is a Variant. &lt;a href="http://www.freepascal.org"&gt;FPC&lt;/a&gt; did not like that, and I had to change it to Trim(VarToStr(X)). There's hundreds of files that use that construct in my project, but thanks God it's all code that is automagically generated by a custom made tool.&lt;span class="sg"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://www.freepascal.org/bugs/showrec.php3?ID=4323"&gt;Bug 4323&lt;/a&gt;: the workaround was use ShortDateFormat and others instead of the thread safe TFormatSettings.&lt;br /&gt;&lt;br /&gt;- Transactions: Instead of TTransactionDesc, there is TSQLTransaction. It led to a lot of changes, including this one that I'm afraid is not a good one (the condition seems to be different):&lt;br /&gt;&lt;blockquote&gt;if Transaction.Active {FdscTrans.InTransaction} then ...&lt;/blockquote&gt;My OPF controls the transactions, throwing its own errors when you try to start a transaction when there's one started, or try to commit when there's no transaction. Is the TSQLTransaction is always active when the connection is open?&lt;br /&gt;&lt;br /&gt;- A weird thing was an error using the LIMIT clause of some SQL queries. I removed them by now, but these LIMIT clauses are needed for the correct operation of the OPF. I will get back to this later.&lt;br /&gt;&lt;br /&gt;That's it. Also, there was a lot of strange behaviours of the IDE (remember I'm using Windows XP), but nothing that can be considered a showstopper. It includes wrong syntax highlight, some weird things with Ctrl-Space and ghost carets. Are these known bugs?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-113391430662822858?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/113391430662822858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=113391430662822858' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113391430662822858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113391430662822858'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2005/12/day-1-first-issues.html' title='Day 1 - First issues'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19623256.post-113391350381491637</id><published>2005-12-06T19:57:00.001-04:00</published><updated>2009-10-05T17:10:31.444-04:00</updated><title type='text'>The beginning</title><content type='html'>I started yesterday the porting of a medium-sized application (~200 kloc) from D7 with CLX to Lazarus (using the 2005-12-05 &lt;a href="http://www.de.freepascal.org/lazarus/"&gt;snapshot&lt;/a&gt;). I was wondering if a diary of this could be useful - I do not want to forget what I'm doing. Right now I'm porting the custom-made Object Persistence Framework (OPF), and managed to get a working test program already (on Windows XP).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19623256-113391350381491637?l=port2laz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://port2laz.blogspot.com/feeds/113391350381491637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19623256&amp;postID=113391350381491637' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113391350381491637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19623256/posts/default/113391350381491637'/><link rel='alternate' type='text/html' href='http://port2laz.blogspot.com/2005/12/beginning.html' title='The beginning'/><author><name>Alexsander</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_UToQCHoLvFo/SeiDUn8XIII/AAAAAAAAAPQ/T55fJ6_Xpdc/S220/sulamericana+006.JPG'/></author><thr:total>0</thr:total></entry></feed>
