<?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-5741455</id><updated>2011-09-09T15:42:39.683+12:00</updated><category term='CodeGear'/><category term='MDA'/><category term='FireBird'/><category term='Development'/><category term='Interbase'/><category term='SQL'/><category term='BlackfishSQL'/><category term='Database'/><category term='ECO'/><category term='programming'/><category term='Delphi'/><title type='text'>Idle Musings of a Delphi Junkie</title><subtitle type='html'>Welcome to the Blog of David Clegg. I am a hard-core Delphi fan, so most of my posts will probably reflect this.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>74</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5741455.post-4905281066877907250</id><published>2007-09-14T16:22:00.000+12:00</published><updated>2007-09-14T16:27:00.732+12:00</updated><title type='text'>Time to shut up shop</title><content type='html'>This will be my last post on this blog, as I've moved my meager blogging exploits to a &lt;a href="http://blogs.codegear.com/dclegg"&gt;new home&lt;/a&gt;. Feel free to mosey on over there for a full explanation. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-4905281066877907250?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/4905281066877907250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=4905281066877907250' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/4905281066877907250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/4905281066877907250'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2007/09/time-to-shut-up-shop.html' title='Time to shut up shop'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-3114586172657701630</id><published>2007-08-23T12:41:00.000+12:00</published><updated>2007-08-23T14:41:32.205+12:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeGear'/><category scheme='http://www.blogger.com/atom/ns#' term='ECO'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='MDA'/><category scheme='http://www.blogger.com/atom/ns#' term='BlackfishSQL'/><title type='text'>Using VCL.NET with ECO IV in CodeGear RAD Studio</title><content type='html'>As part of the Highlander Beta Blogging initiative, I have been given permission from &lt;a href="www.codegear.com"&gt;CodeGear&lt;/a&gt; to demonstrate features and functionality of the up and coming &lt;a href="www.codegear.com"&gt;CodeGear&lt;/a&gt; RAD Studio product.&lt;br /&gt;&lt;br /&gt;As &lt;a href="www.codegear.com"&gt;CodeGear&lt;/a&gt; are also currently running a &lt;a href="http://dn.codegear.com/article/36783"&gt;video competition&lt;/a&gt;, I thought I'd use this unfair advantage to enter :-)&lt;br /&gt;&lt;br /&gt;The following two videos (they were one, but had to be split in order to comply with YouTubes 10 minute limit) demonstrate a simple Master Detail application created in &lt;a href="http://www.capableobjects.com/products/ecoiv"&gt;ECO&lt;/a&gt; using VCL.NET as the presentation framework. In the first video, the data is persisted to an XML file.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt; &lt;param name="movie" value="http://www.youtube.com/v/7gL2EpmVquw"&gt; &lt;/param&gt; &lt;embed src="http://www.youtube.com/v/7gL2EpmVquw" type="application/x-shockwave-flash" width="425" height="350"&gt; &lt;/embed&gt; &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;The second video extends upon this to change the persistence to write the data in a BlackfishSQL database.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt; &lt;param name="movie" value="http://www.youtube.com/v/0uODVLgOMq8"&gt; &lt;/param&gt; &lt;embed src="http://www.youtube.com/v/0uODVLgOMq8" type="application/x-shockwave-flash" width="425" height="350"&gt; &lt;/embed&gt; &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;I strongly encourage all readers/viewers to favour these videos. I can't guarantee any fame or fortune to come your way, but I will be sure to have a beer in your honour. Heck, if you ever get over to New Zealand, I may even be convinced to shout you one. :-)&lt;br /&gt;&lt;br /&gt;UPDATE: I have uploaded the original video to &lt;a href="http://dn.codegear.com/article/36846"&gt;CodeGear Developer Network&lt;/a&gt;. I would recommend watching this one rather than the two I submitted to YouTube. The content is the same, but there is no loss in resolution. Feel free to still vote for my YouTube submissions though. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-3114586172657701630?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/3114586172657701630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=3114586172657701630' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/3114586172657701630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/3114586172657701630'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2007/08/using-vclnet-with-eco-iv-in-codegear.html' title='Using VCL.NET with ECO IV in CodeGear RAD Studio'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-7656001267186704847</id><published>2007-07-12T16:49:00.002+12:00</published><updated>2007-07-12T16:55:18.881+12:00</updated><title type='text'>A couple of YouTube funnies</title><content type='html'>&lt;ul&gt;&lt;br /&gt;&lt;li&gt;If you're feeling thirsty, &lt;a href="http://www.youtube.com/watch?v=qg1ckCkm8YI"&gt;Apple juice&lt;/a&gt; is pretty good for you.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Those &lt;a href="http://www.youtube.com/watch?v=Xs3SfNANtig"&gt;wacky Trojans&lt;/a&gt; are at it again.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-7656001267186704847?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/7656001267186704847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=7656001267186704847' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/7656001267186704847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/7656001267186704847'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2007/07/couple-of-youtube-funnies.html' title='A couple of YouTube funnies'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-8180104862679178459</id><published>2007-06-27T09:06:00.000+12:00</published><updated>2007-06-27T09:21:36.558+12:00</updated><title type='text'>Everybodys Free (to write software)</title><content type='html'>I've decided to take the &lt;a href="http://www.stevetrefethen.com/blog/DelphiVCLWisdom.aspx"&gt;challenge&lt;/a&gt; issued by Steve Trefethan, and have extended his excellent list with my take:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Learn to populate your user interface from the database without using TDataSet/TDataSource&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Learn to leverage the power of the Refactoring menu&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Learn how to write and leverage effective unit tests&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Write a Delphi for .NET application. You won't get cooties, I promise&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Write an ECO application&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Learn how to leverage interfaces to add runtime discoverable behaviours to classes&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Write an article and submit it to &lt;a href="http://dn.codegear.com"&gt;Codegear Developer Network&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Learn another language. You will become a stronger Delphi developer for your efforts&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Point your local school or college to the &lt;a href="http://www.turboexplorer.com/"&gt;Turbo Explorer&lt;/a&gt; suite of products. For bonus points, offer to teach a Delphi programming course&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Unsubscribe from borland.public.delphi.non-technical&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-8180104862679178459?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/8180104862679178459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=8180104862679178459' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/8180104862679178459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/8180104862679178459'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2007/06/everybodys-free-to-write-software.html' title='Everybodys Free (to write software)'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-4049813761998922442</id><published>2007-06-01T14:46:00.000+12:00</published><updated>2007-06-01T15:05:10.576+12:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Interbase'/><category scheme='http://www.blogger.com/atom/ns#' term='FireBird'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Inserting a record only once</title><content type='html'>A few weeks back, my boss showed me a technique he uses when inserting a record into a FireBird table, which caters for the scenario that the record may already be there and therefore shouldn't be inserted. It was one of those simple yet elegant solutions, and I've been meaning to share it here. Well, I'm waiting for a data import process to finish, so I thought I'd take the time to finally do this.&lt;br /&gt;&lt;br /&gt;The technique revolves around turning the concept of a left join on its head and using it to check for failure (i.e a null field value). Here is an example of what I'm talking about :-&lt;br /&gt;&lt;pre class="sourcecode"&gt;&lt;br /&gt;&lt;code class="keyword"&gt;insert&lt;/code&gt; &lt;code class="keyword"&gt;into&lt;/code&gt; tax_category(category_description, tax_rate)&lt;br /&gt;&lt;code class="keyword"&gt;select&lt;/code&gt; &lt;code class="quote"&gt;'GST'&lt;/code&gt;, &lt;code class="quote"&gt;'12.5'&lt;/code&gt; &lt;code class="keyword"&gt;from&lt;/code&gt; rdb$&lt;code class="keyword"&gt;database&lt;/code&gt;&lt;br /&gt;&lt;code class="keyword"&gt;left&lt;/code&gt; &lt;code class="keyword"&gt;join&lt;/code&gt; tax_category t&lt;br /&gt;&lt;code class="keyword"&gt;on&lt;/code&gt; t.category_description = &lt;code class="quote"&gt;'GST'&lt;/code&gt;&lt;br /&gt;&lt;code class="keyword"&gt;where&lt;/code&gt; t.category_id &lt;code class="keyword"&gt;is&lt;/code&gt; &lt;code class="keyword"&gt;null&lt;/code&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The above snippet will attempt to insert a record into the tax_category table using a set of hard-coded values, but because of the left join and where clause, the recordset being used for the insert will be empty if the join finds an existing record in the table.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-4049813761998922442?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/4049813761998922442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=4049813761998922442' title='24 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/4049813761998922442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/4049813761998922442'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2007/06/inserting-record-only-once.html' title='Inserting a record only once'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>24</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-7173794700369719175</id><published>2007-03-02T09:45:00.000+13:00</published><updated>2007-03-02T10:07:43.294+13:00</updated><title type='text'>Hang on, help is on its way</title><content type='html'>I have been given permission from CodeGear to blog about some of the new features in the soon to be released Delphi 2007 for Win32, code named Spacely. It seemed like as good an excuse as any to wake this normally sleepy blog from its usual slumber.&lt;br /&gt;&lt;br /&gt;One of the major complaints with Delphi 2006 was the quality of the online help shipped with the product. I know personally that I find locating the information I require in the D2006 help to be a lot more cumbersome than in Delphi versions 7 and below. &lt;br /&gt;&lt;br /&gt;For instance, when looking up the help for a particular class, often related symbols are listed in the help but with no hyperlink, forcing you to search for that symbol individually as you peruse down the chain of responsibility for the class. And another pet peeve is how all symbols for a class are listed strictly in alphabetical order, rather than also being limited by scope.&lt;br /&gt;&lt;br /&gt;Thankfully, CodeGear have acknowledged this as a major issue, and have been taking significant steps to improve the situation. I am glad to say that the D2007 help has improved tremendously in this regard. As a little teaser, below I've attached screenshots showing the summary for the TCollectionItem class, along with details of all members. As a comparison, I've also included a screenshot of the same information from the D2006 help. For the benefit for readers who have not seen the D2006 help, these screenshots preceed the D2007 ones in each example (and are not covered in a big Beta version disclaimer :-)). A larger version of each of the below screenshots can be shown by clicking on them.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_EqwrN8doZxc/Rec-rYpf8CI/AAAAAAAAAA0/eKHF2cW0NiM/s1600-h/Help1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_EqwrN8doZxc/Rec-rYpf8CI/AAAAAAAAAA0/eKHF2cW0NiM/s400/Help1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5037063623308996642" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_EqwrN8doZxc/Rec-1Ipf8DI/AAAAAAAAAA8/PlJpKhxUNXc/s1600-h/Help2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_EqwrN8doZxc/Rec-1Ipf8DI/AAAAAAAAAA8/PlJpKhxUNXc/s400/Help2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5037063790812721202" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You'll note in the above screenshot that the class heirarchy is rendered in a graphical fashion. It is also important to note that each of the individual boxes representing a class in the inheritance tree is hyperlinked to the help summary for the class being shown.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_EqwrN8doZxc/Rec-SIpf8AI/AAAAAAAAAAk/91hksX7OAvc/s1600-h/Help3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_EqwrN8doZxc/Rec-SIpf8AI/AAAAAAAAAAk/91hksX7OAvc/s400/Help3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5037063189517299714" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_EqwrN8doZxc/Rec-eYpf8BI/AAAAAAAAAAs/498rijigQ90/s1600-h/Help4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_EqwrN8doZxc/Rec-eYpf8BI/AAAAAAAAAAs/498rijigQ90/s400/Help4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5037063399970697234" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In the above shot, you can clearly see that the members for the TCollectionItem class are grouped by visibility level. These sections can also be collapsed and expanded, as evidenced by the public methods section being collapsed in the screenshot. There is also additional information shown about each symbol in the class, such as whether it is a virtual method.&lt;br /&gt;&lt;br /&gt;Now, I don't expect a 100% perfect help system in their first attempt to resolve all the issues in the previous version, but it certainly seems that significant strides have been made in this area. So it seems the &lt;a href="http://en.wikipedia.org/wiki/Little_River_Band"&gt;Little River Band&lt;/a&gt; were right, and Help is on its way :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-7173794700369719175?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/7173794700369719175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=7173794700369719175' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/7173794700369719175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/7173794700369719175'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2007/03/hang-on-help-is-on-its-way.html' title='Hang on, help is on its way'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_EqwrN8doZxc/Rec-rYpf8CI/AAAAAAAAAA0/eKHF2cW0NiM/s72-c/Help1.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-2275288206381342499</id><published>2007-02-13T22:31:00.000+13:00</published><updated>2007-01-25T09:50:40.133+13:00</updated><title type='text'>I like to fiddle</title><content type='html'>I was reminded once again this week of the usefulness of a tool I initially discovered a while ago when resolving a bug with &lt;a href="http://cc.codegear.com"&gt;CodeCentral&lt;/a&gt; downloading submissions in IE7. This handy little utility called &lt;a href="http://www.fiddlertool.com/fiddler/"&gt;Fiddler &lt;/a&gt; is an HTTP proxy which allows you to intercept and log all HTTP traffic between clients and servers. It also allows you to place breakpoints so request and response packets can be manually altered.&lt;br /&gt;&lt;br /&gt;This week I've been working on developing a &lt;a href="http://en.wikipedia.org/wiki/Representational_State_Transfer"&gt;REST&lt;/a&gt; web service client. I can't make the assumption that a timed out transmission wasn't actually received and processed at the server, so I needed to ensure I gracefully handled any timeouts when posting requests. The thing that made simulating this particular condition interesting was that I wanted certain requests to succeed and others to fail. And because I don't have control over the server, this would normally require writing my own dummy server or proxy app so I could simulate this behavior. But by using &lt;a href="http://www.fiddlertool.com/fiddler/"&gt;Fiddler&lt;/a&gt;, I was able easily to intercept all traffic to the server and prevent certain packets from getting through, which would then have the desired effect of a timeout being raised for those particular HTTP post operations.&lt;br /&gt;&lt;br /&gt;While this may be vastly under utilizing the power of &lt;a href="http://www.fiddlertool.com/fiddler/"&gt;Fiddler&lt;/a&gt;, it certainly served as a timely reminder to me how useful this tool is when developing HTTP based applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-2275288206381342499?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/2275288206381342499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=2275288206381342499' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/2275288206381342499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/2275288206381342499'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2007/02/i-like-to-fiddle.html' title='I like to fiddle'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-7768542697088317136</id><published>2007-01-25T09:47:00.000+13:00</published><updated>2007-01-25T09:50:40.160+13:00</updated><title type='text'>Tag, you're it!</title><content type='html'>Firstly, I should apologise for taking so long to get to this. But better late than never, aye?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.codegear.com/jesperhogstrom/"&gt;Jesper Hogstrom&lt;/a&gt; has tagged me, so it is now my turn to try and blog about 5 semi-interesting facts that might not be well known about me. Unfortunately, I've not &lt;a href="http://blogs.codegear.com/nickhodges/archive/2006/12/20/30787.aspx"&gt;been in an FA18 while it's pushed through the sound barrier&lt;/a&gt;, but I'll do my best to make this interesting.&lt;br /&gt;&lt;br /&gt;1. Working as a software developer was not my first career choice. I initially wanted to be a sound audio engineer, spending my days behind a mixing desk creating the next killer album. But because I am partially deaf in my left ear, I had to abandon that dream.&lt;br /&gt;&lt;br /&gt;2. I started my career as a bank teller, which was a vocation I did for about 6 years. When working for &lt;a href="http://www.westpac.com.au/internet/publish.nsf/Content/PB+HomePage"&gt;Westpac&lt;/a&gt; in Australia, the call came out for staff who wanted to be trained as computer programmers. The logic was that by doing so, the bank would groom a breed of programmers who also understand the needs of the business. In any case, this was the turning point in my career and helped me to become the Delphi Junkie that I am today.&lt;br /&gt;&lt;br /&gt;3. I lived in Singapore for 3 years, between 1977 and 1979. My dad taught at the school for the children of the New Zealand, Australian and British armed forces. His job also saw us living in a little town called &lt;a href="http://en.wikipedia.org/wiki/Ardrossan%2C_South_Australia"&gt;Ardrossan&lt;/a&gt; in South Australia for a year, and nearly had us living on the island of  &lt;a href="http://en.wikipedia.org/wiki/Niue"&gt;Niue&lt;/a&gt; for a year.&lt;br /&gt;&lt;br /&gt;4. While not quite as fast as an FA18,  I have piloted a Cessna once. I was given what I thought was a scenic flight as a Christmas present from my mother-in-law, but once I hopped in the plane, the pilot let me take over the controls for the whole flight. This included performing the take off and landing (with help, of course). I can see that flying would get very addictive very quickly.&lt;br /&gt;&lt;br /&gt;5. I am currently in the middle of a 'get fit' phase, which has me going for a morning run 4 days a week. I run about &lt;a href="http://www.mapmyrun.com/route/new-zealand/auckland/143283371"&gt;2.2KM&lt;/a&gt;, which may not seem like very far but is still enough of a challenge. I'm thinking about stepping up to &lt;a href="http://www.mapmyrun.com/route/new-zealand/auckland/171719283"&gt;3.9KM&lt;/a&gt; real soon now.&lt;br /&gt;&lt;br /&gt;Now to pass the mantle on to other Bloggers. I tag &lt;a href="http://radioactivecode.com"&gt;Diego Barros&lt;/a&gt;, &lt;a href="http://blogs.codegear.com/chewy/"&gt;Chewy,&lt;/a&gt; &lt;a href="http://blogs.codegear.com/RichardVowles/"&gt;Richard Vowles&lt;/a&gt; and &lt;a href="http://blogs.codegear.com/MalcolmGroves/"&gt;Malcolm Groves&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-7768542697088317136?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/7768542697088317136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=7768542697088317136' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/7768542697088317136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/7768542697088317136'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2007/01/tag-you.html' title='Tag, you&apos;re it!'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-8997251882448787738</id><published>2007-01-01T00:20:00.000+13:00</published><updated>2007-01-01T00:45:26.275+13:00</updated><title type='text'>I'm Spiderman</title><content type='html'>I took the &lt;a href="http://www.thesuperheroquiz.com/"&gt;Superhero quiz&lt;/a&gt; today, and apparently I'm Spiderman :-&lt;br /&gt;&lt;br /&gt;"You are intelligent, witty, a bit geeky and have great power and responsibility."&lt;BR&gt;&lt;br /&gt;&lt;IMG SRC="http://www.thesuperheroquiz.com/pics/spidy.gif"&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;I'm quite chuffed with this result, as it dovetails nicely into my desire to increase my web development skills :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-8997251882448787738?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/8997251882448787738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=8997251882448787738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/8997251882448787738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/8997251882448787738'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2007/01/im-spiderman.html' title='I&apos;m Spiderman'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-116551983249394618</id><published>2006-12-08T08:30:00.000+13:00</published><updated>2006-12-08T08:30:32.493+13:00</updated><title type='text'>I've got a new job</title><content type='html'>Normally I wouldn't blog about getting a new job, but this particular one has attributes which I think make it worthy of bringing this relatively inactive blog back to life. It's not the fact that I'll be using Delphi 2006 in a fulltime capacity. Nor is it the fact that there is an ECO project on the horizon. Sure, they are both very attractive attributes, but the best thing about this job is that I'll be working with a gentleman known on the Delphi newsgroups as "Scout".&lt;br /&gt;&lt;br /&gt;Regulars to the borland.public.delphi.non-technical newsgroup will probably have read many of Scouts posts, which often revolve around a common theme. This theme is of the little guy battling the big guys (and winning) by using the power and productivity of Delphi. Below are a few of his posts :-&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://groups-beta.google.com/group/borland.public.delphi.non-technical/msg/c55ea906b4d28a59"&gt;Skinning a cat &amp; refining cat skinning the delphi way&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://groups-beta.google.com/group/borland.public.delphi.non-technical/msg/ecfaede4c47dcad8"&gt;About porting a DOS BP7 app to Delphi&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://groups-beta.google.com/group/borland.public.delphi.non-technical/msg/1ebcdeeb4e29309c"&gt;I shipped my first BDS2006-built system&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://groups-beta.google.com/group/borland.public.delphi.non-technical/msg/6c03dc1abe234922"&gt;My experience with ALM &amp; Delphi&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; &lt;br /&gt;&lt;br /&gt;I am very excited to have the opportunity to work with someone who shares my passion for Delphi, and am relishing the challenges I will face as I enter what is a totally new application domain for me. And after meeting Scout in person, it seems that we share many of the same ideas in regards to application architectures and software development in general. Bring it on!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-116551983249394618?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/116551983249394618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=116551983249394618' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/116551983249394618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/116551983249394618'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2006/12/ive-got-new-job_08.html' title='I&apos;ve got a new job'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-115153830802621964</id><published>2006-06-29T11:45:00.000+12:00</published><updated>2006-06-29T11:45:08.026+12:00</updated><title type='text'>Are you a Help Vampire?</title><content type='html'>While browsing the Borland newsgroups this morning, I was intrigued by a line in Peter Below's signature stating "Don't be a vampire". Following the &lt;a href="http://slash7.com/pages/vampires" title="Help Vampires"&gt;accompanying link&lt;/a&gt; took me to a page which I could definitely relate to. It seems I've worked with one or two Help Vampires (and still do ;-)), and have certainly spotted my fair share on the newsgroups.&lt;br&gt; &lt;br /&gt;It always boggles me why so many people don't Google for solutions before posting to newsgroups or online forums. I personally find that I very rarely come across a problem that hasn't already been solved, with the solution documented somewhere on the Internet. And for those &lt;a href="http://www.borland.com/us/products/delphi/index.html" title="Borland Delphi 2006"&gt;Borland Developer Studio&lt;/a&gt; users out there, you can always install my &lt;a href="http://cc.borland.com/Item.aspx?id=22678" title="Google Search Open Tool"&gt;Google Search open tool&lt;/a&gt; into the IDE, to make this process a little easier. It was originally written using C#Builder 1, and should hopefully work with all versions of the BDS lDE. Be warned it was my first ever open tool, and not my finest work by any means. But I find it functional enough to be a useful addition to my BDS setup.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-115153830802621964?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/115153830802621964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=115153830802621964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/115153830802621964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/115153830802621964'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2006/06/are-you-help-vampire_115153830802621964.html' title='Are you a Help Vampire?'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-115035604923212908</id><published>2006-06-15T19:20:00.000+12:00</published><updated>2006-06-15T19:20:49.276+12:00</updated><title type='text'>BDS 2006 CodeCentral open tool updated</title><content type='html'>I've updated the &lt;a href="http://cc.borland.com/item.aspx?id=24005" title="BDS 2006 CodeCentral open tool"&gt;CodeCentral open tool for BDS 2006&lt;/a&gt; to allow it to be loaded if BDS is launched using one of the single personality (e.g. C#Builder) shortcuts.&lt;br&gt;&lt;br /&gt;Be aware that there are some known niggles when loading BDS with some of the personalities. For example, the CodeCentral menu item requires two clicks to respond the first time it is chosen, and the forms won't be loaded as part of the initially loaded project desktop. Manually selecting the desktop in the comobox after the IDE has loaded will cause it to load all CodeCentral open forms correctly. I'll endevour to address these issues in a future release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-115035604923212908?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/115035604923212908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=115035604923212908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/115035604923212908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/115035604923212908'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2006/06/bds-2006-codecentral-open-tool-updated.html' title='BDS 2006 CodeCentral open tool updated'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-115028055269393125</id><published>2006-06-14T22:22:00.000+12:00</published><updated>2006-06-14T22:29:11.416+12:00</updated><title type='text'>CodeCentral web service open tool for D2005</title><content type='html'>A D2005 version of the CodeCentral web service open tool has been &lt;a href="http://cc.borland.com/item.aspx?id=24011" title="D2005 CodeCentral web service open tool"&gt;uploaded to CodeCentral&lt;/a&gt;. I have also hopefully addressed issues that BDS 2006 Professional users were suffering with missing BPLs. So if you are a BDS Pro user who attempted to use the &lt;a href="http://cc.borland.com/item.aspx?id=24005" title="BDS 2006 CodeCentral web service open tool"&gt;BDS 2006 version&lt;/a&gt; of the open tool, please download it and let me know if you still have problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-115028055269393125?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/115028055269393125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=115028055269393125' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/115028055269393125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/115028055269393125'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2006/06/codecentral-web-service-open-tool-for.html' title='CodeCentral web service open tool for D2005'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-115009722688616411</id><published>2006-06-12T19:27:00.000+12:00</published><updated>2006-06-12T19:27:06.956+12:00</updated><title type='text'>CodeCentral web service is live</title><content type='html'>For the uninitiated, &lt;a href="cc.borland.com" title="CodeCentral"&gt;CodeCentral&lt;/a&gt; is an excellent online repository of source code, demo applications and other valuable programming resources. In additional to the web interface, a web service can now be accessed to search against the CodeCentral repository and download submissions. For all the goss, read the article &lt;a href="http://bdn.borland.com/article/33517" title="CodeCentral web service article"&gt;here&lt;/a&gt;.&lt;br&gt;&lt;br /&gt;For now the web service currently provides a read only view of the CodeCentral data, but there are plans for future versions to support rating and commenting of submissions, and allow the adding and editing of submissions.&lt;br&gt;&lt;br /&gt;In conjunction with the web service launch, an &lt;a href="http://cc.borland.com/Item.aspx?id=24005" title="CodeCentral web service open tool"&gt;open tool&lt;/a&gt; for BDS 2006 has also been developed. This allows CodeCentral to be searched without ever having to leave the comfy confines of the IDE.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-115009722688616411?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/115009722688616411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=115009722688616411' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/115009722688616411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/115009722688616411'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2006/06/codecentral-web-service-is-live.html' title='CodeCentral web service is live'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-114833225702009892</id><published>2006-05-23T09:10:00.000+12:00</published><updated>2006-05-23T09:11:00.033+12:00</updated><title type='text'>New ECO Book Released</title><content type='html'>Alois Schmid has released an &lt;a href="http://www.ecospace.de/en_ecobook.html"&gt;English translation&lt;/a&gt; of his ECO book which was previously only available in German. I haven't had a chance to give it a detailed going over yet, but judging from the Table of Contents it certainly looks like it covers an impressive amount of material. Well done Alois! Your contribution is certain to be very well received by the ECO development community.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-114833225702009892?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/114833225702009892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=114833225702009892' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/114833225702009892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/114833225702009892'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2006/05/new-eco-book-released.html' title='New ECO Book Released'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-114622167889108861</id><published>2006-04-28T22:54:00.000+12:00</published><updated>2006-04-28T22:54:38.946+12:00</updated><title type='text'>Wohoo! Free Stuff!</title><content type='html'>Looks like the kind folks at &lt;a href="http://www.modelmakertools.com/" title="ModelMaker Tools"&gt;ModelMaker Tools&lt;/a&gt; are having a bit of a &lt;a href="http://www.modelmakertools.com/free-licenses.html" title="ModelMaker Tools giveaway"&gt;giveaway&lt;/a&gt;. All you have to do is e-mail them with the ModelMaker product you'd like, along with a few other contact details, and they will be drawing 3 lucky winners on June 1st. See &lt;a href="http://www.modelmakertools.com/free-licenses.html" title="ModelMaker Tools giveaway"&gt;here&lt;/a&gt; for full details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-114622167889108861?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/114622167889108861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=114622167889108861' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/114622167889108861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/114622167889108861'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2006/04/wohoo-free-stuff.html' title='Wohoo! Free Stuff!'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-113330910399729076</id><published>2005-11-30T13:05:00.000+13:00</published><updated>2005-11-30T13:05:03.996+13:00</updated><title type='text'>PocketCaddy gets the ECO treatment</title><content type='html'>&lt;p&gt;A while ago I wrote an application to demonstrate the capabilities of the Delphi for .NET Compact Framework preview compiler. This application was designed to keep track of the scores for a round of golf for one or more players, and has been floating around on &lt;a href="http://cc.borland.com/Item.aspx?id=23393"&gt;CodeCentral&lt;/a&gt; for a while. It was even given a mention in &lt;a href="http://blogs.borland.com/davidi/archive/2005/05/30.aspx"&gt;David Intersimone's blog&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;One thing that became apparent very early on in the PocketCaddy development cycle was that it that it is extremely tedious to enter course and player data on a PocketPC device. I decided to use this as an excuse to finally dive head first into the ECO world, and set about creating an administration application which would allow data to be entered on a PC and downloaded to the PocketPC via a web service. I am pleased to announce that this is now downloadable from &lt;a href="http://cc.borland.com/Item.aspx?id=23610"&gt;CodeCentral&lt;/a&gt;. &lt;br /&gt;&lt;p&gt;Because this was my first ECO application, I wanted to explore many aspects of ECO development, so as a result it will show examples of the following ECO technologies and techniques :-&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;ECO Winforms application&lt;/li&gt;&lt;br /&gt;&lt;li&gt;ECO web service application&lt;/li&gt;&lt;br /&gt;&lt;li&gt;ECO sync server application used by the Winforms and web service applications to broker persistence requests to an Interbase database&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Traversing an ECO model at runtime and serializing to custom XML&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Custom AutoForms implementation (ported from an original &lt;a href="http://www.droopyeyes.com/default.asp?mode=ShowProduct&amp;ID=15"&gt;C# implementation&lt;/a&gt; written by Peter Morris, with his kind permission)&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Be aware that it was developed using Delphi 2006 and ECO III, so you may be unable to compile it in Delphi 2005. Nevertheless the code should still give insights into many techniques that will work with ECO II. Feel free to offer any feedback, but please be gentle. As I mentioned earlier, this was my first attempt at an ECO app :-)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-113330910399729076?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/113330910399729076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=113330910399729076' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/113330910399729076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/113330910399729076'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2005/11/pocketcaddy-gets-eco-treatment_30.html' title='PocketCaddy gets the ECO treatment'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-113281296730655905</id><published>2005-11-24T19:16:00.000+13:00</published><updated>2005-11-26T00:52:40.236+13:00</updated><title type='text'>Enumerating COM ports in Delphi for .NET</title><content type='html'>I needed to enumerate all the available COM ports in a .NET application I was writing the other day. Because the 1.1 version of the .NET Framework has no inbuilt support for serial communications, this meant it was time to Google a solution. To my surprise there were surprisingly few hits, with the only usable solution described on a web site written in Chinese. Not to be discouraged, I used the &lt;a href="http://babelfish.altavista.com/"&gt;AltaVista BabelFish translation service&lt;/a&gt; to translate it to English, and below is the end result (after converting it from C# with the help of the &lt;a href="http://dotnet.borland.com/babelclient/BabelClient.aspx"&gt;Borland BabelCode&lt;/a&gt; web service). I customized it slightly so that either all ports on the system would be returned, or only COM ports (which is all that I was interested in at the time). I'm posting this here so an easy solution will be a mere Google away for all those English speaking Delphi programmers out there. :-)&lt;br&gt;&lt;br /&gt;&lt;pre class="sourcecode"&gt;&lt;code&gt;&lt;br /&gt;&lt;font color="#000000"&gt;&lt;b&gt;unit&lt;/b&gt; AvailablePortsUnit;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;interface&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;uses&lt;/b&gt;&lt;br /&gt;  System.Runtime.InteropServices, System.Collections.Specialized;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;type&lt;/b&gt;&lt;br /&gt;  [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]&lt;br /&gt;  PORT_INFO_1 = &lt;b&gt;record&lt;/b&gt;&lt;br /&gt;    pName: &lt;b&gt;string&lt;/b&gt;;&lt;br /&gt;  &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;function&lt;/b&gt; AvailablePorts(&lt;b&gt;const&lt;/b&gt; AComPortsOnly: Boolean): StringCollection;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;implementation&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#000000"&gt;[DllImport&lt;/font&gt;(&lt;font color="#9933CC"&gt;'winspool.drv'&lt;/font&gt;,&lt;font color="#000000"&gt; CharSet=CharSet.Auto)]&lt;br /&gt;&lt;b&gt;function&lt;/b&gt; EnumPorts(AName: &lt;b&gt;string&lt;/b&gt;; ALevel: Integer; ABuffer: IntPtr;&lt;br /&gt;      ACbBuff: Integer; out ANeeded: Integer; out AReturned: Integer): Boolean; &lt;b&gt;external&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;function&lt;/b&gt; AvailablePorts(&lt;b&gt;const&lt;/b&gt; AComPortsOnly: Boolean): StringCollection;&lt;br /&gt;&lt;b&gt;type&lt;/b&gt;&lt;br /&gt;  TPortInfoArray = &lt;b&gt;array&lt;/b&gt; &lt;b&gt;of&lt;/b&gt; PORT_INFO_1;&lt;br /&gt;&lt;b&gt;var&lt;/b&gt;&lt;br /&gt;  lIndex: Integer;&lt;br /&gt;  lComName: &lt;b&gt;string&lt;/b&gt;;&lt;br /&gt;  i: Integer;&lt;br /&gt;  lCurrent: IntPtr;&lt;br /&gt;  lPorts: TPortInfoArray;&lt;br /&gt;  lBuffer: IntPtr;&lt;br /&gt;  lNeeded: Integer;&lt;br /&gt;  lReturned: Integer;&lt;br /&gt;&lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;  Result := StringCollection.Create;&lt;br /&gt;  lBuffer := IntPtr.Zero;&lt;br /&gt;  EnumPorts(&lt;b&gt;nil&lt;/b&gt;, 1, lBuffer, 0, lNeeded, lReturned);&lt;br /&gt;  lBuffer := Marshal.AllocHGlobal((lNeeded + 1));&lt;br /&gt;  &lt;b&gt;try&lt;/b&gt;&lt;br /&gt;    EnumPorts(&lt;b&gt;nil&lt;/b&gt;, 1, lBuffer, lNeeded, lNeeded, lReturned);&lt;br /&gt;    SetLength(lPorts, lReturned);&lt;br /&gt;    lCurrent := lBuffer;&lt;br /&gt;    &lt;b&gt;for&lt;/b&gt; i := 0 &lt;b&gt;to&lt;/b&gt; lReturned - 1 &lt;b&gt;do&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;      lPorts[i] := (PORT_INFO_1(Marshal.PtrToStructure(lCurrent, TypeOf(PORT_INFO_1))));&lt;br /&gt;      &lt;b&gt;if&lt;/b&gt; (&lt;b&gt;not&lt;/b&gt; AComPortsOnly) &lt;b&gt;or&lt;/b&gt; (lPorts[i].pName.StartsWith(&lt;/font&gt;&lt;font color="#9933CC"&gt;'COM'&lt;/font&gt;&lt;font color="#000000"&gt;)) &lt;b&gt;then&lt;/b&gt;&lt;br /&gt;      &lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;        &lt;b&gt;if&lt;/b&gt; AComPortsOnly &lt;b&gt;then&lt;/b&gt;&lt;br /&gt;        &lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;          lIndex := lPorts[i].pName.IndexOf(&lt;/font&gt;&lt;font color="#9933CC"&gt;':'&lt;/font&gt;&lt;font color="#000000"&gt;);&lt;br /&gt;          &lt;b&gt;if&lt;/b&gt; (lIndex &amp;lt;&amp;gt; -1) &lt;b&gt;then&lt;/b&gt;&lt;br /&gt;            lComName := lPorts[i].pName.Remove(lIndex, 1)&lt;br /&gt;          &lt;b&gt;else&lt;/b&gt;&lt;br /&gt;            lComName := lPorts[i].pName;&lt;br /&gt;        &lt;b&gt;end&lt;/b&gt;&lt;br /&gt;        &lt;b&gt;else&lt;/b&gt;&lt;br /&gt;          lComName := lPorts[i].pName;&lt;br /&gt;        Result.Add(lComName);&lt;br /&gt;      &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;      lCurrent := IntPtr((Integer(lCurrent) + Marshal.SizeOf(TypeOf(PORT_INFO_1))));&lt;br /&gt;    &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;  &lt;b&gt;finally&lt;/b&gt;&lt;br /&gt;    Marshal.FreeHGlobal(lBuffer);&lt;br /&gt;  &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;b&gt;end&lt;/b&gt;.&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-113281296730655905?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/113281296730655905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=113281296730655905' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/113281296730655905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/113281296730655905'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2005/11/enumerating-com-ports-in-delphi-for.html' title='Enumerating COM ports in Delphi for .NET'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-112717062056718695</id><published>2005-09-20T10:57:00.000+12:00</published><updated>2005-09-20T10:57:00.566+12:00</updated><title type='text'>The Smart Device Framework has been freed!</title><content type='html'>The &lt;a href="http://www.opennetcf.org/sdf" title="OpenNetCF Smart Device Framework"&gt;Smart Device Framework&lt;/a&gt; is an essential &lt;a href="http://www.opennetcf.org/library/" title="Smart Device Framework Online Help"&gt;framework of classes&lt;/a&gt; for anyone tackling any serious CF development. It plugs many of the functionality gaps left by the standard CF assemblies.&lt;br /&gt;&lt;br /&gt;This framework used to only be accessible to VS.NET 2003 users, as the SDF installer exited if it couldn't detect the presence of VS.NET.&lt;br /&gt;&lt;br /&gt;Thanks to Chris Tacke (a co-founder of &lt;a href="http://www.opennetcf.org/CategoryView.aspx?category=Home" title="OpenNETCF.org"&gt;OpenNETCF.org&lt;/a&gt;), this limitation can now be avoided, as the Smart Device Framework is now available as a binaries only download from the &lt;a href="http://www.opennetcf.org/sdf" title="Smart Device Framework Downloads."&gt;SDF download page&lt;/a&gt;. The full source code for the SDF (C#) can also be downloaded if required.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-112717062056718695?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/112717062056718695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=112717062056718695' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/112717062056718695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/112717062056718695'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2005/09/smart-device-framework-has_112717062056718695.html' title='The Smart Device Framework has been freed!'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-112699729821641905</id><published>2005-09-18T10:48:00.000+12:00</published><updated>2005-09-18T22:04:45.903+12:00</updated><title type='text'>Excellent Delphi for .NET CF article</title><content type='html'>Stefan Cruysberghs has published an excellent &lt;a href="http://www.scip.be/index.php?Page=ArticlesDelphi15&amp;Lang=EN"&gt;Delphi for .NET Compact Framework article&lt;/a&gt; on his website. It expands upon my &lt;a href="http://bdn.borland.com/article/0,1410,33066,00.html"&gt;Quickstart guide&lt;/a&gt;, by explaining many of the differences between the compact and desktop versions of the .NET framework, and offers workarounds for some of the missing methods.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-112699729821641905?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/112699729821641905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=112699729821641905' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/112699729821641905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/112699729821641905'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2005/09/excellent-delphi-for-net-cf-article.html' title='Excellent Delphi for .NET CF article'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-112370657458115975</id><published>2005-08-11T08:42:00.000+12:00</published><updated>2005-08-11T08:42:54.580+12:00</updated><title type='text'>Now why didn't I think of that?</title><content type='html'>I've recently had an &lt;a href="http://bdn.borland.com/article/0,1410,33276,00.html" title="VCL.NET with ECO article"&gt;article&lt;/a&gt; posted on BDN explaining how to use VCL.NET with &lt;a href="http://www.borland.com/us/products/delphi/eco.html" title="ECO"&gt;ECO&lt;/a&gt;. While I was relatively happy with it, the approach does lose any databinding support that using &lt;a href="http://www.borland.com/us/products/delphi/eco.html" title="ECO"&gt;ECO&lt;/a&gt; with WinForms provides&lt;br&gt;&lt;br /&gt;In the &lt;a href="nntp://newsgroups.borland.com/borland.public.delphi.modeldrivenarchitecture.eco" title="ECO Delphi newsgroup"&gt;ECO newsgroups&lt;/a&gt; today, Kostas Terzides outlined how to use a TListConnector class to enable databinding standard VCL.NET databound controls to an ExpressionHandle. I've outlined his steps below :-&lt;br&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Drop a TListConnector (from Borland.Vcl.ADONETDb namespace- it might not be installed by default) in the form and add a TDataSource and a TDBgrid (or your favorite 3rd party grid). Wire them all up.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Add Borland.Eco.Handles to the uses clause (interface section)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Add these private fields in the form:&lt;/li&gt;&lt;br /&gt;&lt;font face="Courier New" size=2&gt;&lt;pre class="sourcecode"&gt;&lt;code&gt;&lt;br /&gt;  &lt;font color="#000000"&gt;&lt;b&gt;private&lt;/b&gt;&lt;br /&gt;&lt;/font&gt;    &lt;font color="#003399"&gt;&lt;i&gt;{ Private declarations }&lt;/i&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000000"&gt;    FEcoSpace:TEcoSpace;&lt;br /&gt;    FEhContact:ExpressionHandle;&lt;br /&gt;    FRefHandle:ReferenceHandle;&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/font&gt;&lt;br /&gt;&lt;li&gt;Add this in the OnCreate event handler of the form:&lt;/li&gt;&lt;br /&gt;&lt;font face="Courier New" size=2&gt;&lt;pre class="sourcecode"&gt;&lt;code&gt;&lt;br /&gt;&lt;font color="#000000"&gt;&lt;b&gt;procedure&lt;/b&gt; TMainForm.FormCreate(Sender: TObject);&lt;br /&gt;&lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;  FEcoSpace:=TEcoSpace.Create;&lt;br /&gt;  FEcoSpace.Active:=True;&lt;br /&gt;&lt;br /&gt;  FRefHandle:=ReferenceHandle.Create;&lt;br /&gt;  FRefHandle.EcoSpace:=FEcoSpace;&lt;br /&gt;&lt;br /&gt;  FEhContact:=ExpressionHandle.Create;&lt;br /&gt;  FEhContact.RootHandle:=FRefHandle;&lt;br /&gt;  FEhContact.Expression:=&lt;/font&gt;&lt;font color="#9933CC"&gt;'Contact.allInstances'&lt;/font&gt;;&lt;br /&gt;&lt;font color="#000000"&gt;&lt;br /&gt;  ListConnector1.DataObject:=FEhContact.GetList;&lt;br /&gt;  ListConnector1.Active:=True;&lt;br /&gt;&lt;b&gt;end&lt;/b&gt;;&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Add this in the event handler for OnNewRecord of ListConnector1 (this is a little bit weird (the dataset gets automatically from dsInsert to dsEdit), but it is a quick and dirty solution. If someone has a better one please post):&lt;/li&gt;&lt;br /&gt;&lt;font face="Courier New" size=2&gt;&lt;pre class="sourcecode"&gt;&lt;code&gt;&lt;br /&gt;&lt;font color="#000000"&gt;&lt;b&gt;procedure&lt;/b&gt; TMainForm.ListConnector1NewRecord(DataSet: TDataSet);&lt;br /&gt;&lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;  Contact.Create(FEcoSpace);&lt;br /&gt;  FEhContact.EnsureBindingList;&lt;br /&gt;  ListConnector1.CheckBrowseMode;&lt;br /&gt;  ListConnector1.Edit;&lt;br /&gt;&lt;b&gt;end&lt;/b&gt;;&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/font&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-112370657458115975?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/112370657458115975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=112370657458115975' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/112370657458115975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/112370657458115975'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2005/08/now-why-didnt-i-think-of-t_112370657458115975.html' title='Now why didn&apos;t I think of that?'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-112207529987304347</id><published>2005-07-23T11:34:00.000+12:00</published><updated>2005-07-23T11:37:27.390+12:00</updated><title type='text'>VCL.NET support for ECO... a light winks on</title><content type='html'>I'd love to have &lt;a href="http://www.borland.com/us/products/delphi/eco.html" title="ECO"&gt;ECO&lt;/a&gt; support &lt;a href="http://bdn.borland.com/article/0,1410,29460,00.html" title="VCL.NET"&gt;VCL.NET&lt;/a&gt;, and was ruminating over this fact yesterday, when a thought dawned on me. The only thing that really makes &lt;a href="http://www.borland.com/us/products/delphi/eco.html" title="ECO"&gt;ECO&lt;/a&gt; a WinForms technology is its support for .NET WinForms binding via the Reference/Expression/CurrencyManagerHandle components, and the EcoAutoForm stuff. The other underlying services and frameworks are not really dependant on WinForms at all.&lt;br&gt;&lt;br /&gt;For the life of me, I can't see why it wouldn't be feasible to use &lt;a href="http://bdn.borland.com/article/0,1410,29460,00.html" title="VCL.NET"&gt;VCL.NET&lt;/a&gt; as your presentation framework, and still have full access to the EcoSpace IPersistenceService, IUndoService, IDirtyListService, IOCLService etc. The only thing you'd lose is the ability to have your domain objects bound to your GUI, which isn't really a big deal to me as I was in the habit of manually populating from my BO classes with my last few projects anyway. Hang on...&lt;br&gt;&lt;br /&gt;&lt;i&gt;type, type, compile, mumble, type, compile..&lt;/i&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;OK, now I've quickly thrown together a prototype to test my theory. It uses the assembly containing the model that my currently under construction WinForms and ASP.NET &lt;a href="http://www.borland.com/us/products/delphi/eco.html" title="ECO"&gt;ECO&lt;/a&gt; apps use, and simply shows all instances of the Course class from the model in a TListView. It does, however use a PersistenceMapperClient to talk to my &lt;a href="http://www.borland.com/us/products/delphi/eco.html" title="ECO"&gt;ECO&lt;/a&gt; server application, and this all worked out of the box (as expected). If anyone is interested (or actually reads this blog for that matter), feel free to &lt;a href="mailto:dclegg@gmail.com"&gt;contact me&lt;/a&gt; and I can send you a copy. Alternatively, it was posted to the &lt;a href="nntp://newsgroups.borland.com/borland.public.attachments" title="Borland Public Attachments"&gt;borland.public.attachements&lt;/a&gt; newsgroup, but be warned that posts there have a limited shelf life.&lt;br&gt;&lt;br /&gt;&lt;br /&gt;Its only a proof of concept thing, but seems to strengthen my belief that there is no reason why &lt;a href="http://www.borland.com/us/products/delphi/eco.html" title="ECO"&gt;ECO &lt;/a&gt;and &lt;a href="http://bdn.borland.com/article/0,1410,29460,00.html" title="VCL.NET"&gt;VCL.NET&lt;/a&gt; are mutually exclusive. It only has the code for the &lt;a href="http://bdn.borland.com/article/0,1410,29460,00.html"&gt;VCL.NET&lt;/a&gt; app, and includes the binaries for the assembly containing my model, and for the &lt;a href="http://www.borland.com/us/products/delphi/eco.html" title="ECO"&gt;ECO&lt;/a&gt; server (connection hardcoded to tcp://localhost:8000/PocketCaddyServer). The &lt;a href="http://www.borland.com/us/products/delphi/eco.html" title="ECO"&gt;ECO&lt;/a&gt; Server has a PersistenceMapperBDP which is talking to an &lt;a href="http://www.borland.com/us/products/interbase/index.html" title="InterBase"&gt;InterBase&lt;/a&gt; database with the hardcoded path of POCKETCADDY.GDB (also included in the zip), but I see no reason why PersistenceMapperXML couldn't be used in the &lt;a href="http://bdn.borland.com/article/0,1410,29460,00.html" title="VCL.NET"&gt;VCL.NET&lt;/a&gt; client for testing. I only chose to use my &lt;a href="http://www.borland.com/us/products/delphi/eco.html" title="ECO"&gt;ECO&lt;/a&gt; server to further re-inforce the whole proof of concept deal.&lt;br&gt;&lt;br /&gt;&lt;br /&gt;And since coding this app, I've had &lt;a href="http://groups-beta.google.com/group/borland.public.delphi.modeldrivenarchitecture.eco/browse_frm/thread/d5ce2fa333a48de5/5e6a846e8415e81f#5e6a846e8415e81f" title="confirmation"&gt;confirmation&lt;/a&gt; from the &lt;a href="http://www.borland.com/us/products/delphi/eco.html" title="ECO"&gt;ECO&lt;/a&gt; architects that there is nothing wrong with this plan at all, and the only thing you lose is support for databinding to your GUI. So if that isn't really an issue, there is no real reason to not use &lt;a href="http://bdn.borland.com/article/0,1410,29460,00.html" title="VCL.NET"&gt;VCL.NET&lt;/a&gt; for &lt;a href="http://www.borland.com/us/products/delphi/eco.html" title="ECO"&gt;ECO&lt;/a&gt; apps today.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-112207529987304347?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/112207529987304347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=112207529987304347' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/112207529987304347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/112207529987304347'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2005/07/vclnet-support-for-eco-light-winks-on.html' title='VCL.NET support for ECO... a light winks on'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-112125190020094154</id><published>2005-07-13T22:51:00.000+12:00</published><updated>2005-07-13T22:55:38.630+12:00</updated><title type='text'>What a blast!</title><content type='html'>Well, I managed to come through my &lt;a href="http://bdn.borland.com/article/0,1410,33109,00.html" title="24 Hours of Delphi"&gt;24 Hours of Delphi &lt;/a&gt;interview largely unscathed. As it turns out, the majority of the discussion centered around the forthcoming &lt;a href="http://www.borland.com/us/products/delphi/index.html" title="Delphi"&gt;Delphi&lt;/a&gt; for .NET Compact Preview compiler. It seems there is quite a bit of interest in the community for this one. I was fortunate to get a sneak peek at this, when &lt;a href="http://blogs.borland.com/johnk/" title="John Kasters blog"&gt;John Kaster&lt;/a&gt; from &lt;a href="http://www.borland.com/" title="Borland"&gt;Borland&lt;/a&gt; Developer Relations asked me to write a &lt;a href="http://bdn.borland.com/article/0,1410,33066,00.html" title="Delphi for .NET CF Preview Article"&gt;CF Preview Quick Start article&lt;/a&gt;.&lt;br&gt;&lt;br /&gt;I mentioned in the chat that I'd been working on a PocketPC application called &lt;a href="http://blogs.borland.com/davidi/archive/2005/05/30/4621.aspx" title="David I PocketCaddy blog entry"&gt;PocketCaddy&lt;/a&gt;. I've now uploaded this to &lt;a href="http://cc.borland.com/item.aspx?id=23393" title="PocketCaddy CodeCentral submission"&gt;CodeCentral&lt;/a&gt;. This is very much an evolving product, and I'm currently working on a PC based data entry &lt;a href="http://www.borland.com/us/products/delphi/eco.html" title="Enterprise Core Objects"&gt;ECO&lt;/a&gt; WinForms app, and &lt;a href="http://www.borland.com/us/products/delphi/eco.html" title="Enterprise Core Objects"&gt;ECO&lt;/a&gt; web service to expose this data to the PocketPC device. So as they say, stay tuned...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-112125190020094154?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/112125190020094154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=112125190020094154' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/112125190020094154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/112125190020094154'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2005/07/what-blast.html' title='What a blast!'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-112122226024737825</id><published>2005-07-13T14:37:00.000+12:00</published><updated>2005-07-13T16:09:59.553+12:00</updated><title type='text'>OK, now this is getting a little scary</title><content type='html'>I've been slated to take part in Borlands &lt;a href="http://bdn.borland.com/article/0,1410,33109,00.html" title="24 Hours of Delphi"&gt;24 Hours of Delphi&lt;/a&gt; marathon tonight. I must say the enormity of this didn't really sink in until I noticed my name in an &lt;a href="http://biz.yahoo.com/bw/050712/125796.html?.v=1" title="Borland Press Release"&gt;official Borland press release&lt;/a&gt;.&lt;br&gt;&lt;br /&gt;After all, I'm just a mere Delphi Junkie who spends &lt;strike&gt;a little&lt;/strike&gt; &lt;strike&gt;a few hours&lt;/strike&gt; a fair chunk of his life on the Borland newsgroups. It is indeed a great honor to be considered interview worthy, especially considering the lofty company I'll be keeping in this event.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-112122226024737825?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/112122226024737825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=112122226024737825' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/112122226024737825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/112122226024737825'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2005/07/ok-now-this-is-getting-little-scary.html' title='OK, now this is getting a little scary'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-111848957850905424</id><published>2005-06-11T23:32:00.000+12:00</published><updated>2005-06-22T22:22:10.553+12:00</updated><title type='text'>Showing a true read-only DataGrid</title><content type='html'>I had an interesting situation the other day where I wanted to use a WinForms DataGrid to display a read-only list of some &lt;a href="http://www.borland.com/us/products/delphi/eco.html" title="ECO"&gt;ECO&lt;/a&gt; classes. I soon discovered that there is no easy way to support having a DataGrid where the entire row is selected when a record is clicked. Even though the DataGrid is read-only, an individual column can still get focus, with the caret painted and the contents highlighted.&lt;br&gt;&lt;br /&gt;Normally to get around this problem I would revert to using a ListView, where getting this behaviour is easy. But as the DataGrid was being used in an &lt;a href="http://www.borland.com/us/products/delphi/eco.html" title="ECO"&gt;ECO&lt;/a&gt; WinForms application, I wanted to still use it so I could take advantage of the EcoFormExtender functionality offered when doing so. This includes being able to add, edit and delete &lt;a href="http://www.borland.com/us/products/delphi/eco.html" title="ECO"&gt;ECO&lt;/a&gt; objects without writing a single line of code.&lt;br&gt;&lt;br /&gt;After a bit of judicial Googling, I found that I should be able to get the behaviour I wanted by creating a DataGridTextBoxColumn descendant and overriding its Edit method. Below is the code for this :-&lt;br /&gt;&lt;pre class="sourcecode"&gt;&lt;code&gt;&lt;br /&gt;&lt;font color="#000000"&gt;&lt;b&gt;procedure&lt;/b&gt; TDataGridUnselectableCellColumn.Edit(ASource: CurrencyManager;&lt;br /&gt;  ARowNumber: Integer; ABounds: Rectangle; AReadOnly: Boolean; AText: &lt;b&gt;string&lt;/b&gt;;&lt;br /&gt;  ACellIsVisible: Boolean);&lt;br /&gt;&lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;  &lt;b&gt;if&lt;/b&gt; (FSelectedRow &amp;gt; -1) &lt;b&gt;and&lt;/b&gt; (FSelectedRow &amp;lt; ASource.List.Count) &lt;b&gt;then&lt;/b&gt;&lt;br /&gt;    DataGridTableStyle.DataGrid.UnSelect(FSelectedRow);&lt;br /&gt;  FSelectedRow := ARowNumber;&lt;br /&gt;  DataGridTableStyle.DataGrid.Select(FSelectedRow);&lt;br /&gt;&lt;b&gt;end&lt;/b&gt;;&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;This is all well and good, but I don't have design-time support for this TDataGridUnselectableCellColumn class, and I don't really want to stuff around too much to see if it is feasible to create a DataGrid descendant just so I can get it. To get around this problem, I created a base form containing a DataGrid which calls the below method on the WinForm.Load event :-&lt;br /&gt;&lt;pre class="sourcecode"&gt;&lt;code&gt;&lt;br /&gt;&lt;font color="#000000"&gt;&lt;b&gt;procedure&lt;/b&gt; TDataGridForm.InitializeGridColumns;&lt;br /&gt;&lt;b&gt;var&lt;/b&gt;&lt;br /&gt;  lTableStyle: DataGridTableStyle;&lt;br /&gt;  lSourceColumn: DataGridColumnStyle;&lt;br /&gt;  lDestColumn: TDataGridUnselectableCellColumn;&lt;br /&gt;&lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;  lTableStyle := DataGridTableStyle.Create;&lt;br /&gt;  &lt;b&gt;if&lt;/b&gt; dgMain.TableStyles.Count = 1 &lt;b&gt;then&lt;/b&gt;&lt;br /&gt;  &lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;for&lt;/b&gt; lSourceColumn &lt;b&gt;in&lt;/b&gt; dgMain.TableStyles[0].GridColumnStyles &lt;b&gt;do&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;      lDestColumn := TDataGridUnselectableCellColumn.Create;&lt;br /&gt;      lDestColumn.Alignment := lSourceColumn.Alignment;&lt;br /&gt;      lDestColumn.HeaderText := lSourceColumn.HeaderText;&lt;br /&gt;      lDestColumn.NullText := lSourceColumn.NullText;&lt;br /&gt;      lDestColumn.PropertyDescriptor := lSourceColumn.PropertyDescriptor;&lt;br /&gt;      lDestColumn.MappingName := lSourceColumn.MappingName;&lt;br /&gt;      lDestColumn.Width := lSourceColumn.Width;&lt;br /&gt;      lTableStyle.GridColumnStyles.Add(lDestColumn);&lt;br /&gt;    &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;    dgMain.TableStyles.Clear;&lt;br /&gt;    dgMain.TableStyles.Add(lTableStyle);&lt;br /&gt;  &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;b&gt;end&lt;/b&gt;;&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;So I now have an easy way to have a read-only display of a list of my ECO objects, simply by descending from this TDataGridForm and configuring the DataGrid.TableStyles property to contain the column mappings for the class attributes I wish to display. Not the most elegant solution for sure, but one I can live with for now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-111848957850905424?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/111848957850905424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=111848957850905424' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/111848957850905424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/111848957850905424'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2005/06/showing-true-read-only-datagrid.html' title='Showing a true read-only DataGrid'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-111774659132562277</id><published>2005-06-03T09:09:00.000+12:00</published><updated>2005-06-03T09:15:26.276+12:00</updated><title type='text'>Just when you thought the .NET Framework couldn't get any smaller</title><content type='html'>I've been programming using the .NET Compact Framework for a little while now, and enjoying how easy it makes development on portable devices such as PocketPCs.&lt;br&gt;&lt;br /&gt;Well it seems that Microsoft are taking this one step further with the introduction of the &lt;a href="http://dotnet.sys-con.com/read/84123.htm" title="Introduction to the TinyCLR"&gt;TinyCLR&lt;/a&gt;. In a nutshell, it is a cut down version of the .NET Framework which is embedded right in the processor of devices using &lt;a href="http://www.spotstop.com/" title="SpotStop"&gt;Smart Personal Object Technology&lt;/a&gt; (or SPOT). So developers can write managed applications which essentially target an embedded microcontroller. This sounds like one interesting piece of technology, and one I'll be keeping a keen eye on.&lt;br&gt;&lt;br /&gt;And I'd love one of those &lt;a href="http://direct.msn.com/" title="MSN Direct"&gt;MSN Direct watches&lt;/a&gt;. It's a shame the're currently only for the USA/Canada market&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-111774659132562277?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/111774659132562277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=111774659132562277' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/111774659132562277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/111774659132562277'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2005/06/just-when-you-thought-net-framework.html' title='Just when you thought the .NET Framework couldn&apos;t get any smaller'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-111766207908914347</id><published>2005-06-02T09:41:00.000+12:00</published><updated>2005-06-02T19:24:12.706+12:00</updated><title type='text'>I've fallen head over heels in love</title><content type='html'>One of the tasks which has been on my TODO list for quite a while now, was to learn how to leverage the power of &lt;a href="http://www.borland.com" title="Borland"&gt;Borlands&lt;/a&gt; &lt;a href="http://www.borland.com/delphi/architect/eco/" title="ECO"&gt;Enterprise Core Objects&lt;/a&gt; model driven architecture framework. Well, I've finally bitten the bullet and have started implementing my first personal project using it.&lt;br&gt;&lt;br /&gt;This project will involve an ECO WindowsForms application to enable the user to enter data into a repository, and an ECO web service application to allow other applications to consume and add to this data. I may even throw an ECO ASP.NET application into the mix for good measure.&lt;br&gt;&lt;br /&gt;I've been working on this over the past week in my spare time, and all I can say is 'WOW!'. It is amazing the amount of plumbing code we all take for granted as part of a normal application, which ECO now takes care of for us. I can see this having an astonishing effect on my future application development productivity. I'll be able to concentrate more on the business problem at hand, rather than common implementation details such as retrieving my business objects from my persistence layer.&lt;br&gt;&lt;br /&gt;One of the biggest complaints that ECO seems to get is its lack of documentation. It is a complex framework, with many things to learn to totally leverage its full power. I must say though, with the resources already out there, and thanks to the extremely helpful folks in the &lt;a href="nntp://newsgroups.borland.com/borland.public.delphi.modeldrivenarchitecture.eco" title="Delphi ECO newsgroup"&gt;Delphi ECO newsgroup&lt;/a&gt;, I've not found this to be a barrier yet. Below are a smattering of links I've found especially useful:-&lt;br&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.borland.com/delphi/architect/eco/" title="ECO"&gt;ECO Articles&lt;/a&gt; (Dave says "start here" :-) )&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://homepages.borland.com/ecoteam/pmwiki/pmwiki.php" title="ECO Wiki"&gt;ECO Wiki&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.malcolmgroves.com/categories/eco/" title="Malcolm Groves's Blog"&gt;Malcolm Groves's blog&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://blogs.borland.com/jonashogstrom/" title="Jonas Hogstroms's blog"&gt;Jonas Hogstrom's Blog&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://blogs.borland.com/jesperhogstrom/" title="Jesper Hogstroms blog"&gt;Jesper Hogstrom's blog&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://blogs.slcdug.org/petermorris/" title="Peter Moriss's blog"&gt;Peter Moriss's blog&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.howtodothings.com/ViewSubCategory.aspx?SubCategory=60" title="HowToDoThings.com"&gt;HowToDoThings.com&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.bitwisemag.com/copy/delphi/swart/blog1.htm" title="Dr Bobs Bitwise ECO blog article"&gt;Creating a Blog with Delphi and ECO&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://bdn.borland.com/article/0,1410,33061,00.html" title="ECO II video"&gt;Accelerating Development with ECO II&lt;/a&gt; (video)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://bdn.borland.com/article/0,1410,32978,00.html" title="ECO existing database whitepaper"&gt;Using existing database with ECO whitepaper&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-111766207908914347?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/111766207908914347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=111766207908914347' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/111766207908914347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/111766207908914347'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2005/06/ive-fallen-head-over-heels-in-love.html' title='I&apos;ve fallen head over heels in love'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-111750477281530320</id><published>2005-05-31T13:59:00.000+12:00</published><updated>2005-05-31T13:59:32.850+12:00</updated><title type='text'>Delphi for .NET CF Preview sighting</title><content type='html'>David Intersimone, from &lt;a href="http://www.borland.com" title="Borland"&gt;Borland&lt;/a&gt; Developer Relations has blogged about the &lt;a href="http://blogs.borland.com/davidi/archive/2005/05/30/4621.aspx" title="Delphi for .NET CF Compiler Preview"&gt;Delphi for .NET Compact Framework compiler preview&lt;/a&gt; which he is showing, among other things, during his current World tour.&lt;br /&gt;&lt;p&gt;I get to do a bit of CF development at &lt;a href="http://www.tvd.co.nz/" title="TVD Homepage"&gt;work&lt;/a&gt;, but all this is done using C# and Visual Studio.NET. While it has been possible to use &lt;a href="http://www.borland.com/delphi/" title="Delphi 2005"&gt;Delphi 2005&lt;/a&gt; for CF development, this is currently only achievable by using the &lt;a href="http://bdn.borland.com/article/0,1410,32950,00.html" title="Delphi 2005 C# CF article"&gt;C# personality&lt;/a&gt;. It's good to see that we'll soon be able to do the same using the Delphi language.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-111750477281530320?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/111750477281530320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=111750477281530320' title='23 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/111750477281530320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/111750477281530320'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2005/05/delphi-for-net-cf-preview-sighting.html' title='Delphi for .NET CF Preview sighting'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>23</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-111639967385024564</id><published>2005-05-18T19:01:00.000+12:00</published><updated>2005-05-18T19:07:31.963+12:00</updated><title type='text'>Another example why I love the JCL</title><content type='html'>I've been using both the &lt;a href="http://sourceforge.net/projects/jcl/" title="JCL"&gt;JCL&lt;/a&gt; and &lt;a href="http://homepages.borland.com/jedi/jvcl/" title="JVCL"&gt;JVCL&lt;/a&gt; from the wonderful folks at &lt;a href="http://www.delphi-jedi.org/" title="JEDI"&gt;JEDI&lt;/a&gt; for a few years now, and was recently reminded why.&lt;br&gt;&lt;br /&gt;I had an unreproducible bug which I had to track down with some debug logging. While there were only one or two points in the code which could cause this particular bug, there were literally hundreds of places in the code which called these routines. With a bit of help from the stack tracing routines in the JCL, I was able to quickly pin down exactly where the problem was originiating. Below is all it took to get the stack trace I required to pinpoint the culprit:&lt;br /&gt;&lt;pre class="sourcecode"&gt;&lt;code&gt;&lt;br /&gt;&lt;font color="#000000"&gt;&lt;b&gt;function&lt;/b&gt; BuildStackTrace(&lt;b&gt;const&lt;/b&gt; ALevel: Integer = 0): &lt;b&gt;string&lt;/b&gt;;&lt;br /&gt;&lt;b&gt;var&lt;/b&gt;&lt;br /&gt;  sl: TStringList;&lt;br /&gt;  locInfo: TJclLocationInfo;&lt;br /&gt;  procAddr: Pointer;&lt;br /&gt;  i: Integer;&lt;br /&gt;&lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;  sl := TStringList.Create;&lt;br /&gt;  &lt;b&gt;try&lt;/b&gt;&lt;br /&gt;    i := ALevel;&lt;br /&gt;    procAddr := Caller(i);&lt;br /&gt;    &lt;b&gt;while&lt;/b&gt; procAddr &amp;lt;&amp;gt; &lt;b&gt;nil&lt;/b&gt; &lt;b&gt;do&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;      &lt;b&gt;if&lt;/b&gt; GetLocationInfo(procAddr, locInfo) &lt;b&gt;then&lt;/b&gt;&lt;br /&gt;        sl.Add(Format(&lt;/font&gt;&lt;font color="#9933CC"&gt;'[$%s] %s.%s Line %d'&lt;/font&gt;,&lt;br /&gt;&lt;font color="#000000"&gt;          [IntToHex(Integer(locInfo.Address), 8), locInfo.UnitName, locInfo.ProcedureName, locInfo.LineNumber]));&lt;br /&gt;        Inc(i);&lt;br /&gt;        procAddr := Caller(i);&lt;br /&gt;    &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;    Result := sl.Text;&lt;br /&gt;  &lt;b&gt;finally&lt;/b&gt;&lt;br /&gt;    sl.Free;&lt;br /&gt;  &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;b&gt;end&lt;/b&gt;;&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;For any Delphi developers who haven't checked out what the JEDI projects have to offer, I strongly recommend you check them out now. And to any JEDI contributors who may be reading this, thanks a bunch and if you're ever in &lt;a href="http://www.aucklandnz.com/" title="Auckland"&gt;Auckland&lt;/a&gt;, look me up and I'll shout you a drink of your favourite poison (with full source code, of course).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-111639967385024564?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/111639967385024564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=111639967385024564' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/111639967385024564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/111639967385024564'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2005/05/another-example-why-i-love-jcl.html' title='Another example why I love the JCL'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-110083949944625277</id><published>2004-11-19T17:44:00.000+13:00</published><updated>2004-11-19T17:44:59.446+13:00</updated><title type='text'>Debugging Delphi 8, VS.NET style</title><content type='html'>While I prefer most aspects of the Delphi 8 and C#Builder IDEs over VS.NET 2003, there is one area I prefer in VS.NET. When it comes to debugging I feel that VS.NET has the edge here, especially if you need to inspect the value of a variable which is an array, or contains other classes (either as a collection, array, or exposed instance). VS.NET allows you to drill down a treeview of the variable contents, which makes it a cinch to inspect the value of any property of even the most complex class instance. I do have a &lt;a href="http://qc.borland.com/wc/wc.exe/details?ReportID=7338" title="QualityCentral Request"&gt;QualityCentral request&lt;/a&gt; to have similar variable inspection support implemented in Delphi, but this hasn't been done yet.&lt;br&gt;&lt;br /&gt;However all is not lost, thanks to the debugging support shipped with the .NET Framework SDK. In the SDK install directory (which on my PC is C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\) there is a GUIDebug subdirectory which contains a program called DebugCLR.exe. This allows you to debug any .NET binary, and provides the ability to inspect variables in the same manner as VS.NET. It's even smart enough to allow you to set breakpoints in your Delphi source and step through just as you would in the Delphi IDE. You will have to associate the source code files one by one, and get used to the different keyboard mapping though.&lt;br&gt;&lt;br /&gt;You can even configure the Delphi 8 tools menu to call this, to simplify using it in those times where you need something a little more powerful than Delphi's variable inspection support. To do that follow these steps in the Delphi 8 IDE:-&lt;br&gt;&lt;br /&gt;- Tools|Configure|Tools.&lt;br /&gt;- Click the 'Add...' button.&lt;br /&gt;- Set the 'Title' edit to 'Microsoft CLR Debugger&lt;br /&gt;- Set the 'Program' edit to point to the DebugCLR.exe&lt;br /&gt;- Set the 'Parameters' edit to '$EXENAME'&lt;br /&gt;- Click the 'OK' button to add the debugger to the Tools menu&lt;br /&gt;- Click the 'Close' button to close the Tools Options dialog&lt;br&gt;&lt;br /&gt;There is one caveat here. It seems that DebugCLR won't allow you to debug the exe until you explicitly tell it you want to debug it. To do this, follow these steps :-&lt;br&gt;&lt;br /&gt;- Debug|Program to Debug...&lt;br /&gt;- Click the 'OK' button.&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-110083949944625277?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/110083949944625277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=110083949944625277' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/110083949944625277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/110083949944625277'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/11/debugging-delphi-8-vsnet-style.html' title='Debugging Delphi 8, VS.NET style'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-109953891554089196</id><published>2004-11-04T16:28:00.000+13:00</published><updated>2004-11-04T16:31:58.640+13:00</updated><title type='text'>Hooray for on-demand printing!</title><content type='html'>It sounds like &lt;a href="http://www.boyet.com/" title="Julian Bucknall"&gt;Julian Bucknall's&lt;/a&gt; excellent &lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/1556227361/qid=1099520906/sr=8-1/ref=sr_8_xs_ap_i1_xgl14/102-5722835-9555358?v=glance&amp;s=books&amp;n=507846" title="The Tomes of Delphi: Algorithms and Data Structures"&gt;Delphi Algorithms and Data Structures&lt;/a&gt; book is going to be &lt;a href="http://www.boyet.com/Articles/ChristmasComesEarly.html" title="Christmas comes early"&gt;available again soon&lt;/a&gt;.&lt;br&gt;&lt;br /&gt;I regretted not buying it when it was in print, so will have to make sure I don't miss out this time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-109953891554089196?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/109953891554089196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=109953891554089196' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109953891554089196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109953891554089196'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/11/hooray-for-on-demand-printing.html' title='Hooray for on-demand printing!'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-109945659625217120</id><published>2004-11-03T17:36:00.000+13:00</published><updated>2004-11-03T17:36:36.253+13:00</updated><title type='text'>Every little bit counts</title><content type='html'>After reading &lt;a href="http://blogs.borland.com/abauer/archive/2004/10/29/1698.aspx" title="Allen Bauer talks to MS Developer support"&gt;Allen Bauer's excellent blog post&lt;/a&gt; which, among other things, highlighted how many developers are blissfully unaware of any non-Microsoft development tools, I've decided to post &lt;a href="http://www.borland.com/delphi_net/" title="Delphi"&gt;Delphi &lt;/a&gt;code snippets when posting to .NET related newsgroups or mailing lists. I decided to take this for a test run today when replying to a query on a &lt;a href="http://www.dot.net.nz/mailinglists.aspx" title="NZ .NET mailing list"&gt;New Zealand .NET mailing list&lt;/a&gt;, and am now sitting back waiting for all the "What the..." responses. :-)&lt;br&gt;&lt;br /&gt;This was also prompted by a reply I got to a query on a .NET third party vendor's peer support newsgroups. I was asking about a problem I'd encountered with using a grid control on an inherited WinForm. Amongst other things, a support rep from the vendor said&lt;br&gt;&lt;br /&gt;"Visual Studio has some pretty severe problems with Visual Inheritance &lt;br /&gt;and collection properties ..."&lt;br /&gt;&lt;br&gt;&lt;br /&gt;I never stated I was using VS.NET when developing the WinForm app in question. I was.... but that's not the point. ;-)&lt;br&gt;&lt;br /&gt;Let the battle begin...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-109945659625217120?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/109945659625217120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=109945659625217120' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109945659625217120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109945659625217120'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/11/every-little-bit-counts.html' title='Every little bit counts'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-109814409551565457</id><published>2004-10-19T13:01:00.000+13:00</published><updated>2004-10-19T13:04:08.556+13:00</updated><title type='text'>There are some things that Delphi shouldn't allow</title><content type='html'>I just discovered today that it's possible to declare a method with parameters in the interface section of a class without needing to declare the parameters in the implementation section. For example, the following code compiles just fine in Delphi 5 :-&lt;br /&gt;&lt;pre class="sourcecode"&gt;&lt;code&gt;&lt;br /&gt;&lt;font color="#000000"&gt;&lt;br /&gt;&lt;b&gt;program&lt;/b&gt; Yuck;&lt;br /&gt;&lt;font color="#003399"&gt;&lt;i&gt;{$APPTYPE CONSOLE}&lt;/i&gt;&lt;/font&gt;&lt;br /&gt;&lt;b&gt;type&lt;/b&gt;&lt;br /&gt;  TSomeClass = &lt;b&gt;class&lt;/b&gt;(TObject)&lt;br /&gt;  &lt;b&gt;public&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;procedure&lt;/b&gt; SomeProc(ASomeParam: &lt;b&gt;string&lt;/b&gt;);&lt;br /&gt;  &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;procedure&lt;/b&gt; TSomeClass.SomeProc;&lt;br /&gt;&lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;  WriteLn(ASomeParam);&lt;br /&gt;&lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;var&lt;/b&gt;&lt;br /&gt;  lSomeClass: TSomeClass;&lt;br /&gt;&lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;  lSomeClass := TSomeClass.Create;&lt;br /&gt;  &lt;b&gt;try&lt;/b&gt;&lt;br /&gt;    lSomeClass.SomeProc(&lt;font color="#9933CC"&gt;'This is just wrong'&lt;/font&gt;);&lt;br /&gt;  &lt;b&gt;finally&lt;/b&gt;&lt;br /&gt;    lSomeClass.Free;&lt;br /&gt;  &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;b&gt;end&lt;/b&gt;.&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;I would &lt;b&gt;hate&lt;/b&gt; to maintain code that uses this technique!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-109814409551565457?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/109814409551565457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=109814409551565457' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109814409551565457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109814409551565457'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/10/there-are-some-things-that-delphi.html' title='There are some things that Delphi shouldn&apos;t allow'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-109659672883322932</id><published>2004-10-01T14:12:00.000+12:00</published><updated>2004-10-01T14:12:08.833+12:00</updated><title type='text'>Assembly &lt;&gt; Namespace</title><content type='html'>One thing that some &lt;a href="http://www.borland.com/delphi/" title="Delphi"&gt;Delphi&lt;/a&gt; developers getting their feet wet in the .NET pool can have fun coming to grips with is the concept of namespaces. In a nutshell, a namespace provides the ability to group related types together in a 'container'. It is important to note however that there is not a 1 to 1 correlation between namespaces and assemblies, and the namespace name might not accurately reflect the assembly where the namespace resides. In addition to this, a namespace may be implemented in multiple assemblies. A more exhaustive explanation can be found at &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/assenamesp.asp" title="MSDN"&gt;MSDN&lt;/a&gt;.&lt;br&gt;&lt;br /&gt;This was highlighted today when helping to convert a C# snippet to Delphi for another developer. One of the classes in the code resided in the System.Windows.Forms.Design namespace, but was actually implemented in the System.Design.dll assembly. As a result, the Delphi unit needed to use System.Windows.Forms.Design in its uses section in order to access the class, but the project also needed reference the System.Design.dll in order to resolve the symbol information for the type. In this case, it was slightly confusing due to the existance of a System.Windows.Forms.dll assembly. It is not illogical for the .NET newcomer to think that the System.Windows.Forms.Design namespace would be implemented in the System.Windows.Forms.dll assembly.&lt;br&gt;&lt;br /&gt;Thankfully the .NET FCL documentation does an excellent job of helping out here. When browsing details for a specific type, it will usually (I say usually, but am yet to encounter where it &lt;b&gt;doesn't&lt;/b&gt;) tell you the namespace where the type is declared (needed for the uses section), and the assembly where it resides (needed for the project reference).&lt;br&gt;&lt;br /&gt;Unfortunately, in &lt;a href="http://www.borland.com/delphi_net/" title="Delphi 8"&gt;Delphi 8&lt;/a&gt;, we don't have the ability to have multiple units contributing to the same name space. In &lt;a href="http://www.borland.com/delphi_net/" title="Delphi 8"&gt;Delphi 8&lt;/a&gt; the namespace is constructed from the unit filename. This means that if you want to have a bunch of types contained in the same namespace, they must reside in the same unit. However, one of the things to come out of the &lt;a href="http://www.lemanix.com/nick/archive/2004/09/13/1305.aspx" title="DiamondBack Previews"&gt;DiamondBack previews&lt;/a&gt; at BorCon this year is that the next version of Delphi will support multi-unit namespaces.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-109659672883322932?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/109659672883322932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=109659672883322932' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109659672883322932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109659672883322932'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/10/assembly-namespace.html' title='Assembly &lt;&gt; Namespace'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-109633007593462425</id><published>2004-09-28T12:07:00.000+12:00</published><updated>2004-09-28T12:08:19.640+12:00</updated><title type='text'>Word of the Day</title><content type='html'>&lt;b&gt;Hippopotomonstrosesquippedaliophobia&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;i&gt;Noun&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Definition:&lt;/i&gt; The fear of long words&lt;br /&gt;&lt;i&gt;Useage:&lt;/i&gt; Hippopotomonstrosesquippedaliophobia is longer than &lt;a href="http://dictionary.reference.com/search?q=Antidisestablishmentarianism" title="Antidisestablishmentarianism"&gt;antidisestablishmentarianism&lt;/a&gt;&lt;br&gt;&lt;br /&gt;There is something about the irony of this word's definition that really amuses me. I should get out more. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-109633007593462425?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/109633007593462425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=109633007593462425' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109633007593462425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109633007593462425'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/09/word-of-day.html' title='Word of the Day'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-109590630011233139</id><published>2004-09-23T14:25:00.000+12:00</published><updated>2004-09-23T14:25:50.190+12:00</updated><title type='text'>Why is this such hard work?</title><content type='html'>While working with Visual Studio.NET 2003 today, I wanted to change the location of a C# project. Simple, me thinks. I'll just save the .csproj in it's new location. Alas, it seems like VS.NET would be too confused by this, as it told me :-&lt;br&gt;&lt;br /&gt;&lt;i&gt;"The project file can only be saved into the project location '(Existing project Location)'. "&lt;/i&gt;&lt;br&gt;&lt;br /&gt;So I Googled the MS newsgroups to find the solution and found this from a member of the Visual Studio Core Team :- &lt;br&gt;&lt;br /&gt;&lt;i&gt;"If you have a solution with project1, project2, and project3 and want to move project3 into a new folder, you can open the solution in the IDE. Remove project3 (right click in solution explorer and chose remove), then in explorer, move all the files to you new location, and then re-add the project to the solution (right click the solution in the solution explorer). If this doesn't work for you, you can always open the .sln file and manually update the relative paths to your projects."&lt;/i&gt;&lt;br&gt;&lt;br /&gt;Why does the VS.NET IDE need to be so anal about this?!? Oh well. At least it makes it consistent with it's inflexible project creation logic. For example, try creating a project called c:\Test\SomeProject.csproj. I can't for the life of me figure out how to tell VS.NET that I &lt;b&gt;don't&lt;/b&gt; want the project stored in a SomeProject directory! And don't even bother trying to create a new project in the same location as an existing one.&lt;br&gt;&lt;br /&gt;But of course, VS.NET knows my intentions far better than I do, so fighting against the IDE should be par for the course until I repent and admit the errors in my ways. :-(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-109590630011233139?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/109590630011233139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=109590630011233139' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109590630011233139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109590630011233139'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/09/why-is-this-such-hard-work.html' title='Why is this such hard work?'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-109589758119374393</id><published>2004-09-23T11:59:00.000+12:00</published><updated>2004-09-23T12:10:49.906+12:00</updated><title type='text'>It's Here!</title><content type='html'>&lt;a href="http://www.stephenking.com/index_flash.php" title="Stephen King"&gt;Stephen King&lt;/a&gt; has finally released the &lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/1880418622/qid=1095897244/sr=8-1/ref=sr_8_xs_ap_i1_xgl14/104-7023060-8905551?v=glance&amp;s=books&amp;n=507846" title="Dark Tower"&gt;final instalment&lt;/a&gt; of his excellent &lt;a href="http://www.stephenking.com/DarkTower/" title="Dark Tower"&gt;Dark Tower series&lt;/a&gt;. I guess I know what I'm doing this weekend. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-109589758119374393?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/109589758119374393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=109589758119374393' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109589758119374393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109589758119374393'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/09/its-here.html' title='It&apos;s Here!'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-109470717637157200</id><published>2004-09-09T17:19:00.000+12:00</published><updated>2004-09-09T17:19:36.370+12:00</updated><title type='text'>More of the same, only different</title><content type='html'>In a similar vein to my Google post earlier today, I was put onto &lt;a href="http://www.c6.org/toogle/" title="Toogle"&gt;this&lt;/a&gt;. Some people have &lt;b&gt;way&lt;/b&gt; too much time on their hands.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-109470717637157200?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/109470717637157200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=109470717637157200' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109470717637157200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109470717637157200'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/09/more-of-same-only-different.html' title='More of the same, only different'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-109468662262375279</id><published>2004-09-09T11:37:00.000+12:00</published><updated>2004-09-24T12:00:02.380+12:00</updated><title type='text'>More clutter for my Taskbar</title><content type='html'>This week I discovered the &lt;a href="http://toolbar.google.com/deskbar" title="Google Deskbar"&gt;Google Deskbar&lt;/a&gt;. Very nice. &lt;br&gt;&lt;br /&gt;As &lt;a href="http://www.google.com" title="Google"&gt;Google&lt;/a&gt; is one of my most indepensibile resources (particularly &lt;a href="http://groups.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;q={1}&amp;btnG=Search&amp;meta=group%3Dborland.public.delphi.*" title="Google Groups"&gt;Google Groups&lt;/a&gt;), it is great to have such easy access seemlessly integrated into my Taskbar. It comes with a set of pre-defined searches, but these can be removed, and custom ones can easily be added. Below are some of the ones I use :-&lt;br&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Delphi Newsgroups&lt;/b&gt;&lt;br /&gt;&lt;a href="http://groups.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;q={1}&amp;btnG=Search&amp;meta=group%3Dborland.public.delphi.*" title="http://groups.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;q={1}&amp;btnG=Search&amp;meta=group%3Dborland.public.delphi.*"&gt;http://groups.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;q={1}&amp;btnG=Search&amp;meta=group%3Dborland.public.delphi.*&lt;/a&gt;&lt;br&gt;&lt;br /&gt;&lt;b&gt;SQL Server Newsgroups&lt;/b&gt;&lt;br /&gt;&lt;a href="http://groups.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;q={1}&amp;btnG=Search&amp;meta=group%3Dmicrosoft.public.sqlserver" title="http://groups.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;q={1}&amp;btnG=Search&amp;meta=group%3Dmicrosoft.public.sqlserver"&gt;http://groups.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;q={1}&amp;btnG=Search&amp;meta=group%3Dmicrosoft.public.sqlserver&lt;/a&gt;&lt;br&gt;&lt;br /&gt;&lt;b&gt;.NET Framework Newsgroups&lt;/b&gt;&lt;br /&gt;&lt;a href="http://groups.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;q={1}&amp;btnG=Search&amp;meta=group%3Dmicrosoft.public.dotnet" title="http://groups.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;q={1}&amp;btnG=Search&amp;meta=group%3Dmicrosoft.public.dotnet"&gt;http://groups.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;q={1}&amp;btnG=Search&amp;meta=group%3Dmicrosoft.public.dotnet&lt;/a&gt;&lt;br&gt;&lt;br /&gt;And now for a shameless plug :-)&lt;br&gt;&lt;br /&gt;I've also developed an &lt;a href="http://cc.borland.com/codecentral/ccweb.exe/listing?id=21489" title="Google Search Add-In"&gt;OTAPI add-in&lt;/a&gt; for the C#Builder IDE which integrates Google web and newsgroup searching into the IDE. It also has basic spell checking functionality. The newsgroup searching comes with a set of pre-defined Borland newsgroups which can be used to restrict searches by, but these can be customized. It also exposes a basic API to allow other newsgroup archives to be supported. There is a plug-in for the &lt;a href="http://www.tamaracka.com/" title="Tamaracka"&gt;Tamaracka&lt;/a&gt; archives included to show how to implement this. It's written in C# but I do have plans to port it to Delphi for .NET.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-109468662262375279?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/109468662262375279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=109468662262375279' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109468662262375279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109468662262375279'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/09/more-clutter-for-my-taskbar.html' title='More clutter for my Taskbar'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-109357476766745560</id><published>2004-08-27T14:46:00.000+12:00</published><updated>2004-08-27T14:46:07.666+12:00</updated><title type='text'>QualityCentral a waste of time? I don't think so!</title><content type='html'>I see many people on the Borland newsgroups asking for the best way to inform &lt;a href="http://www.borland.com" title="Borland"&gt;Borland&lt;/a&gt; about bugs. The answer to this question is simple; &lt;a href="http://qc.borland.com/" title="QualityCentral"&gt;QualityCentral&lt;/a&gt;. It is the only &lt;b&gt;guaranteed&lt;/b&gt; way that your bugs and feature requests will be noticed by Borland. Many other posters in the newsgroups claim that QualityCentral is a waste of time.  Below are links to three of my bug reports (two for Delphi 8, one for the QualityCentral client), which were fixed in a subsequent patch. I think this disproves the myth that QualityCentral is a waste of time quite nicely.&lt;br&gt;&lt;br /&gt;&lt;a href="http://qc.borland.com/wc/wc.exe/details?ReportID=2630" title="http://qc.borland.com/wc/wc.exe/details?ReportID=2630"&gt;2630 - Cannot move splitter on Comments Tab&lt;/a&gt;&lt;br /&gt;&lt;a href="http://qc.borland.com/wc/wc.exe/details?ReportID=6894" title="http://qc.borland.com/wc/wc.exe/details?ReportID=6894"&gt;6894 - Code Editor flickers with ClearType enabled on Windows XP&lt;/a&gt;&lt;br /&gt;&lt;a href="http://qc.borland.com/wc/wc.exe/details?ReportID=7036" title="http://qc.borland.com/wc/wc.exe/details?ReportID=7036"&gt;7036 - WinForms CodeDom parser cannot parse class properties&lt;/a&gt;&lt;br&gt;&lt;br /&gt;I also see many people criticize the interfaces to QualityCentral (Web and desktop clients), citing them as unusable. I personally have no problems with them, but am currently using a &lt;a href="http://www.alphalink.com.au/~jed/QC/" title="Jed, QC"&gt;Windows client developed by Jeremy North&lt;/a&gt;. While still in alpha, I find it very nice with many useful features.&lt;br&gt;&lt;br /&gt;So you have been warned, people. If you want Borland to fix bugs or implement new features, use &lt;a href="http://qc.borland.com/" title="QualityCentral"&gt;QualityCentral&lt;/a&gt;. It's as simple as that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-109357476766745560?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/109357476766745560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=109357476766745560' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109357476766745560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109357476766745560'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/08/qualitycentral-waste-of-time-i-dont.html' title='QualityCentral a waste of time? I don&apos;t think so!'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-109339915696785311</id><published>2004-08-25T13:59:00.000+12:00</published><updated>2004-08-25T13:59:16.966+12:00</updated><title type='text'>Warning schmarning!</title><content type='html'>I've finally decided enough is enough, and have started slowly removing all traces of compiler hints and warnings in the Delphi app I maintain. First step was to remove all from our component package, and now I'm working on the main executable. I'm finding the occasional subtle bug along the way too, which re-enforces my belief that it is pure folly to ignore these.&lt;br&gt;&lt;br /&gt;Only 272 hints and 224 warnings to go. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-109339915696785311?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/109339915696785311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=109339915696785311' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109339915696785311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109339915696785311'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/08/warning-schmarning.html' title='Warning schmarning!'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-109278724338815124</id><published>2004-08-18T12:00:00.000+12:00</published><updated>2004-08-25T18:55:33.383+12:00</updated><title type='text'>More horror code</title><content type='html'>Stumbled across this code today when attemting to tidy up the hundreds of hints/warnings in the app I maintain  (a rant best left for another blog post). All I can say is yuck with a capital Y :-(&lt;br /&gt;&lt;pre class="sourcecode"&gt;&lt;code&gt;&lt;br /&gt;&lt;font color="#000000"&gt;&lt;b&gt;if&lt;/b&gt; Bpp=16 &lt;b&gt;then&lt;/b&gt; Base:=$FFFF &lt;b&gt;else&lt;/b&gt; Base:=-1;&lt;br /&gt;n:=0; b:=fMask &lt;b&gt;mod&lt;/b&gt; 10; Inc(n,b); fMask:=fMask &lt;b&gt;div&lt;/b&gt; 10;&lt;br /&gt;bMask:=Base &lt;b&gt;shr&lt;/b&gt;(Bpp-n); bshr:=8-b; gshl:=b;&lt;br /&gt;b:=fMask &lt;b&gt;mod&lt;/b&gt; 10; Inc(n,b); fMask:=fMask &lt;b&gt;div&lt;/b&gt; 10;&lt;br /&gt;gMask:=Base &lt;b&gt;shr&lt;/b&gt;(Bpp-n)&lt;b&gt;and&lt;/b&gt; &lt;b&gt;not&lt;/b&gt; bMask; rshl:=n; gshr:=8-b;&lt;br /&gt;b:=fMask &lt;b&gt;mod&lt;/b&gt; 10; Inc(n,b); fMask:=fMask &lt;b&gt;div&lt;/b&gt; 10;&lt;br /&gt;rMask:=Base &lt;b&gt;shr&lt;/b&gt;(Bpp-n)&lt;b&gt;and&lt;/b&gt; &lt;b&gt;not&lt;/b&gt;(bMask &lt;b&gt;or&lt;/b&gt; gMask); rshr:=8-b;&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;No formatting was lost when posting this code snippet, BTW. It has been accurately presented in all its...ahem...glory.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-109278724338815124?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/109278724338815124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=109278724338815124' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109278724338815124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109278724338815124'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/08/more-horror-code.html' title='More horror code'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-109240629898889929</id><published>2004-08-14T02:11:00.000+12:00</published><updated>2004-08-16T11:24:49.330+12:00</updated><title type='text'>My Dream Machine Part 2</title><content type='html'>My new home PC arrived yesterday and it's a real screamer! For the first time I can remember, my home PC is gruntier than my work one (with the exception of RAM; my work laptop has 2Gb). The specs are:-&lt;br&gt;&lt;br /&gt;-P4 3.2Ghz w/Hyperthreading&lt;br /&gt;-1Gb 533Mhz DDR2 SDRAM&lt;br /&gt;-160Gb HDD&lt;br /&gt;-128Mb ATI RADEON X300 Graphics Card (OK this &lt;b&gt;was&lt;/b&gt; good until I found out it was considered an entry level card :-( )&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-109240629898889929?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/109240629898889929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=109240629898889929' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109240629898889929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109240629898889929'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/08/my-new-home-pc-arrived-yesterday-and.html' title='My Dream Machine Part 2'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-109220573865449148</id><published>2004-08-11T18:28:00.000+12:00</published><updated>2004-08-11T18:28:58.660+12:00</updated><title type='text'>A change is as good as a holiday</title><content type='html'>I've decided to change the name of my blog to something a bit more interesting than it's former name of 'Dave's Blog'. I think this new one is a lot more colourful, and describes the purpose of this blog a bit more.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-109220573865449148?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/109220573865449148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=109220573865449148' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109220573865449148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109220573865449148'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/08/change-is-as-good-as-holiday.html' title='A change is as good as a holiday'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-109213601903006358</id><published>2004-08-10T23:06:00.000+12:00</published><updated>2004-08-10T23:07:51.903+12:00</updated><title type='text'>For he's a jolly good fellow!</title><content type='html'>&lt;a href="http://homepages.borland.com/dthorpe/" title="Danny Thorpe"&gt;Danny Thorpe&lt;/a&gt; (&lt;a href="http://www.borland.com" title="Borland"&gt;Borland&lt;/a&gt; Chief Scientist) has &lt;a href="http://homepages.borland.com/dthorpe/blog/delphi/2004_08_01_archive.php" title="Delphi Compiler Core"&gt;revealed&lt;/a&gt; that the next version of Delphi will support a new kind of for loop. I doubt I could do it full justice here, so I strongly recommend you read all about it on the&lt;a href="http://homepages.borland.com/dthorpe/blog/delphi/2004_08_01_archive.php" title="Delphi Compiler Core"&gt;Delphi Compiler Core&lt;/a&gt; blog, but is essentially like the C# foreach on steriods (the multidimensional array example is way cool!). &lt;br&gt;&lt;br /&gt;Of course, in true &lt;a href="http://www.borland.com/delphi/" title="Delphi"&gt;Delphi&lt;/a&gt; fashion, it goes above and beyond what other languages have implemented, and it works for the Delphi Win32 &lt;b&gt;AND&lt;/b&gt; Delphi for .NET compilers. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-109213601903006358?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/109213601903006358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=109213601903006358' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109213601903006358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109213601903006358'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/08/for-hes-jolly-good-fellow.html' title='For he&apos;s a jolly good fellow!'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-109177351896994407</id><published>2004-08-06T18:25:00.000+12:00</published><updated>2004-08-06T18:38:43.646+12:00</updated><title type='text'>Another cross against with</title><content type='html'>An &lt;a href="http://www.adug.org.au" title="ADUG"&gt;ADUG&lt;/a&gt; member (name suppressed to protect the innocent) unleashed this code on the mailing list today. Add it to the mounting stack of evidence as to why using &lt;b&gt;with&lt;/b&gt; is not a good idea.&lt;br /&gt;&lt;br /&gt;&lt;pre class="sourcecode"&gt;&lt;code&gt;&lt;br /&gt;&lt;font color="#000000"&gt;    n := -1;        &lt;font color="#003399"&gt;&lt;i&gt;{ counter which identifies which group index we are up to }&lt;/i&gt;&lt;/font&gt;&lt;br /&gt;    &lt;b&gt;with&lt;/b&gt; TProjectAlias(gAliases.Items[PrjIndex]) &lt;b&gt;do&lt;/b&gt; &lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;      &lt;b&gt;with&lt;/b&gt; TNetList(PNetIndex.Items[NetIndex]) &lt;b&gt;do&lt;/b&gt; &lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;        &lt;b&gt;with&lt;/b&gt; TAppIndex(ApplIndex.Items[AppIndex]) &lt;b&gt;do&lt;/b&gt; &lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;          &lt;b&gt;for&lt;/b&gt; i := 0 &lt;b&gt;to&lt;/b&gt; SortedLevels.Count - 1 &lt;b&gt;do&lt;/b&gt; &lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;            &lt;b&gt;with&lt;/b&gt; TLevelEntry(SortedLevels.Items[i]) &lt;b&gt;do&lt;/b&gt; &lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;              &lt;b&gt;if&lt;/b&gt; GroupAdd = StrPas(inGrpAdd) &lt;b&gt;then&lt;/b&gt; &lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;                n := n + 1;                                     &lt;font color="#003399"&gt;&lt;i&gt;{ increment count }&lt;/i&gt;&lt;/font&gt;&lt;br /&gt;                &lt;b&gt;if&lt;/b&gt; n = inIndex &lt;b&gt;then&lt;/b&gt; &lt;b&gt;begin&lt;/b&gt;                       &lt;font color="#003399"&gt;&lt;i&gt;{ check if it is the right one }&lt;/i&gt;&lt;/font&gt;&lt;br /&gt;                  tmpDesc := TLevelEntry(SortedLevels.Items[i]).Desc;     &lt;font color="#003399"&gt;&lt;i&gt;{ copy description }&lt;/i&gt;&lt;/font&gt;&lt;br /&gt;                  StrPCopy(outDesc, PadString(tmpDesc,  DESC_LENGTH));&lt;br /&gt;                  break;&lt;br /&gt;                &lt;b&gt;end&lt;/b&gt;; &lt;font color="#003399"&gt;&lt;i&gt;{ if }&lt;/i&gt;&lt;/font&gt;&lt;br /&gt;              &lt;b&gt;end&lt;/b&gt;; &lt;font color="#003399"&gt;&lt;i&gt;{ if }&lt;/i&gt;&lt;/font&gt;&lt;br /&gt;            &lt;b&gt;end&lt;/b&gt;; &lt;font color="#003399"&gt;&lt;i&gt;{ with }&lt;/i&gt;&lt;/font&gt;&lt;br /&gt;          &lt;b&gt;end&lt;/b&gt;; &lt;font color="#003399"&gt;&lt;i&gt;{ for }&lt;/i&gt;&lt;/font&gt;&lt;br /&gt;        &lt;b&gt;end&lt;/b&gt;; &lt;font color="#003399"&gt;&lt;i&gt;{ with }&lt;/i&gt;&lt;/font&gt;&lt;br /&gt;      &lt;b&gt;end&lt;/b&gt;; &lt;font color="#003399"&gt;&lt;i&gt;{ with }&lt;/i&gt;&lt;/font&gt;&lt;br /&gt;    &lt;b&gt;end&lt;/b&gt;; &lt;font color="#003399"&gt;&lt;i&gt;{ with }&lt;/i&gt;&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Granted, like most starting out Delphi developers I initially embraced the concept (wow, think of all the typing I'm saving with this great feature), but gave away the notion a few years ago due to it being harder to maintain, and the ambiguity issues it can create. I used to make an exception when creating class functions to show modal forms (as shown below), but I've even stopped doing that now.&lt;br /&gt;&lt;br /&gt;&lt;pre class="sourcecode"&gt;&lt;code&gt;&lt;br /&gt;&lt;font color="#000000"&gt;&lt;b&gt;with&lt;/b&gt; TSomeForm.Create(&lt;b&gt;nil&lt;/b&gt;) &lt;b&gt;do&lt;/b&gt;&lt;br /&gt;&lt;b&gt;try&lt;/b&gt;&lt;br /&gt;  Result := ShowModal;&lt;br /&gt;&lt;b&gt;finally&lt;/b&gt;&lt;br /&gt;  Free;&lt;br /&gt;&lt;b&gt;end&lt;/b&gt;;&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-109177351896994407?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/109177351896994407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=109177351896994407' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109177351896994407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109177351896994407'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/08/another-check-against-with.html' title='Another cross against with'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-109174793143525374</id><published>2004-08-06T11:18:00.000+12:00</published><updated>2004-08-06T11:30:48.023+12:00</updated><title type='text'>The snake's gonna be released from it's cage</title><content type='html'>Borland &lt;a href="http://bdn.borland.com/article/0,1410,32499,00.html" title="Diamondback article"&gt;announced today&lt;/a&gt; that they will be showing their next version of the &lt;a href="http://www.borland.com/delphi/"&gt;Delphi&lt;/a&gt; development enviroment, codenamed &lt;a href="http://www.wf.net/~snake/rattlesn.htm" title="Diamondback"&gt;Diamondback&lt;/a&gt;, at &lt;a href="http://info.borland.com/conf2004/" title="BorCon USA 2004"&gt;BorCon USA 2004&lt;/a&gt;. It's a shame I won't be able to attend, as I'd love to be there to see that.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;And here's hoping the "What's New in the Delphi Compiler" track detailed in the article will put pay to all the FUD spread on the ngs that Borland have abandoned the Win32 side of their business. I know it won't but a man can dream, can't he?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-109174793143525374?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/109174793143525374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=109174793143525374' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109174793143525374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109174793143525374'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/08/snakes-gonna-be-released-from-its-cage.html' title='The snake&apos;s gonna be released from it&apos;s cage'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-109002106469274470</id><published>2004-07-17T11:37:00.000+12:00</published><updated>2004-07-17T11:38:44.540+12:00</updated><title type='text'>True Story from the Trenches</title><content type='html'>This true story of the power of D8 was posted on the Borland newsgroups by Kyle Miller.&lt;p&gt;&lt;br /&gt;"The company I am with has 10 years of Delphi code. About a year or so ago, the company hired a C# whiz to write an ASP.NET application based on the current suite of products. He has been developing and testing using a hard coded user name and password to the DB. So he finally had to integrate existing code to fetch and decrypt the user name and password. The problem for him was decrypting the information. He and another C# guy spent a day each trying to re-code existing code into C#. They couldn't get their code to work.&lt;p&gt;&lt;br /&gt;When I heard about this, I said I could create an assembly in Delphi 8 for him to use. In less than 10 minutes, I created my first assembly, compiled in the appropriate units, and sent the DLL on its way. He added the reference to his C# project and was able to use decrypt on the first try.&lt;p&gt;&lt;br /&gt;Yea, it was a VCL.NET assembly, so he had to register two Borland assemblies, but that's no different than how existing applications are deployed, DLLs for reports, add-on modules, etc.&lt;p&gt;&lt;br /&gt;That was the first time I put Delphi 8 to real world use, and it went well. :-)"&lt;p&gt;&lt;br /&gt;Way to go Kyle and Delphi!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-109002106469274470?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/109002106469274470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=109002106469274470' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109002106469274470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/109002106469274470'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/07/true-story-from-trenches.html' title='True Story from the Trenches'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-108960015970114506</id><published>2004-07-12T14:42:00.000+12:00</published><updated>2004-07-12T14:48:06.313+12:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Us Delphi programmers are a wacky bunch!&lt;/h2&gt;&lt;br /&gt;I was browsing &lt;a href="http://www.amazon.com" title="Amazon"&gt;Amazon&lt;/a&gt; today, and it &lt;a href="http://www.amazon.com/exec/obidos/tg/new-for-you/pym/home/-/0201633612/ref=qid=1089599358/sr=50-pd_sr_ec_cs_b/ref=sr_50_pd_sr_ec_cs_b_b/103-1601035-6297427" title="Amazon Page You Made"&gt;told&lt;/a&gt; me that people who bought the Delphi.NET Developers guide apparently also bought Bruce Almighty on DVD, starring Jim Carey.  :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-108960015970114506?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/108960015970114506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=108960015970114506' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108960015970114506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108960015970114506'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/07/us-delphi-programmers-are-wacky-bunch.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-108449150292981949</id><published>2004-05-14T11:38:00.000+12:00</published><updated>2004-05-14T11:38:22.930+12:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Yes, yes, yes! This Rocks!&lt;/h2&gt;&lt;br /&gt;A &lt;a href="http://www.megadeth.com/" title="Megadeth" target="_blank"&gt;Megadeth&lt;/a&gt; fan has created a &lt;a href="http://www.xdude.com/ktc/" title="tribute video" target="_blank"&gt;tribute video&lt;/a&gt; for the bands latest release, Kick the Chair.&lt;br /&gt; &lt;script type="text/javascript"&gt;LinktoComments('Megadeth')&lt;/script&gt;&lt;br /&gt;&lt;noscript&gt;&lt;a href="http://enetation.co.uk//comments.php?user=dclegg&amp;commentid=&lt;Megadeth&gt; "&gt;Comment&lt;/a&gt;&lt;/noscript&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-108449150292981949?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108449150292981949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108449150292981949'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/05/yes-yes-yes-this-rocks-megadeth-fan.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-108441499739769797</id><published>2004-05-13T14:23:00.000+12:00</published><updated>2004-05-13T14:23:17.396+12:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;My Dream Machine is coming :-)&lt;/h2&gt;&lt;br /&gt;I've been having problems with the screen on my old (well, 2 years old) Dell Latitiude C810 laptop. I was able to convince my boss to organise a new one for me, and I have just received confirmation that it's been ordered. &lt;br /&gt;The new one is a &lt;a href="http://www1.ap.dell.com/content/products/productdetails.aspx/latit_d505_au?c=au&amp;l=en&amp;s=bsd&amp;~ck=mn" title="Dell Latitude D505" target="_blank"&gt;Dell Latitude D505&lt;/a&gt;, and below are some of the highlights:&lt;br&gt;&lt;br /&gt;- Pentium M 1.7Ghz Processor&lt;br /&gt;- 2Gb 333 Mhz SDRAM&lt;br /&gt;- 15 Inch SXGA TFT screen (1400x1050)&lt;br /&gt;- 60Gb Hard Drive&lt;br /&gt;- 4X DVD+RW Combo Drive (4/2/8X DVD+RW / 16/10/24X CD-RW)&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Only 7-10 more sleeps to wait :-)....&lt;br /&gt; &lt;script type="text/javascript"&gt;LinktoComments('NewLaptop')&lt;/script&gt;&lt;br /&gt;&lt;noscript&gt;&lt;a href="http://enetation.co.uk//comments.php?user=dclegg&amp;commentid=&lt;NewLaptop&gt; "&gt;Comment&lt;/a&gt;&lt;/noscript&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-108441499739769797?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108441499739769797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108441499739769797'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/05/my-dream-machine-is-coming-ive-been.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-108440495816981708</id><published>2004-05-13T11:35:00.000+12:00</published><updated>2004-08-18T11:33:06.963+12:00</updated><title type='text'>Updated GoogleSearch OTAPI Add-In</title><content type='html'>I've finally finished implementing Google Groups searching in my &lt;a href="http://cc.borland.com/codecentral/ccweb.exe/listing?id=21489" title="GoogleSearch" target="_blank"&gt;GoogleSearch&lt;/a&gt; OTAPI add-in for C#Builder. &lt;br /&gt;I also implemented a rudimentary API to allow other newsgroup archives to be targetted. Nothing flash, but &lt;a href="http://www.rove.com.au/skithouse/home/" title="Skithouse" target="_blank"&gt;nothing suss.&lt;/a&gt;. &lt;br /&gt;&lt;br&gt;&lt;br /&gt;I highly recommend all C#Builder users to download it and check it out. All comments greatfully received, and don't forget to rate it so I can win a Tablet PC ;-)&lt;br /&gt;&lt;script type="text/javascript"&gt;LinktoComments('UpdatedGoogleSearch')&lt;/script&gt;&lt;br /&gt;&lt;noscript&gt;&lt;a href="http://enetation.co.uk//comments.php?user=dclegg&amp;commentid=&lt;UpdatedGoogleSearch&gt; "&gt;Comment&lt;/a&gt;&lt;/noscript&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-108440495816981708?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108440495816981708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108440495816981708'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/05/updated-googlesearch-otapi-add-in-ive.html' title='Updated GoogleSearch OTAPI Add-In'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-108388673392997161</id><published>2004-05-07T11:38:00.000+12:00</published><updated>2004-05-07T11:42:07.216+12:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Delphi 7.1 Update Unleashed&lt;/h2&gt;&lt;br /&gt;The &lt;a href="http://community.borland.com/article/0,1410,32337,00.html" title="Delphi 7.1 Update" target="_blank"&gt;Delphi 7.1 Update&lt;/a&gt; has been released.&lt;br /&gt; &lt;script type="text/javascript"&gt;LinktoComments('Delphi7.1UpdateUnleashed')&lt;/script&gt;&lt;br /&gt;&lt;noscript&gt;&lt;a href="http://enetation.co.uk//comments.php?user=dclegg&amp;commentid=&lt;Delphi7.1UpdateUnleashed&gt; "&gt;Comment&lt;/a&gt;&lt;/noscript&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-108388673392997161?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/108388673392997161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=108388673392997161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108388673392997161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108388673392997161'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/05/delphi-7.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-108373080388632654</id><published>2004-05-05T16:20:00.000+12:00</published><updated>2004-05-05T16:23:48.840+12:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Anders Responds&lt;/h2&gt;&lt;br /&gt;Anders Ohlsson has posted the &lt;a href="http://homepages.borland.com/aohlsson/blog_beta/archive/2004_05_02_archive#108371801808805124" title="Delphi 7.1 Update README" target="_blank"&gt;Delphi 7.1 Update README&lt;/a&gt; on his blog, along with some details about the actual release date.&lt;br /&gt;&lt;p&gt;It sounds like it has the same content as the one Malcolm provided yesterday, but with the added benefit of hyperlinks for all &lt;a href="http://qc.borland.com/" title="QC" target="_blank"&gt;QC&lt;/a&gt; entries mentioned.&lt;br /&gt; &lt;script type="text/javascript"&gt;LinktoComments('Anders Responds')&lt;/script&gt;&lt;br /&gt;&lt;noscript&gt;&lt;a href="http://enetation.co.uk//comments.php?user=dclegg&amp;commentid=&lt;Anders Responds&gt; "&gt;Comment&lt;/a&gt;&lt;/noscript&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-108373080388632654?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/108373080388632654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=108373080388632654' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108373080388632654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108373080388632654'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/05/anders-responds-anders-ohlsson-has.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-108363673935705273</id><published>2004-05-04T14:12:00.000+12:00</published><updated>2004-05-04T16:56:42.640+12:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Beat you to it, Anders ;-)&lt;/h2&gt;&lt;br /&gt;&lt;a href="http://www.malcolmgroves.com/" title="Malcolm Groves" target="_blank"&gt;Malcolm Groves&lt;/a&gt;, from Borland Australia provided the &lt;a href="http://www.adug.org.au" title="ADUG" target="_blank"&gt;ADUG&lt;/a&gt; with details of the ReadMe file for the upcoming D7 update. It can be viewed &lt;a href="http://www.malcolmgroves.com/temp/D71_readme_upd1.txt" title="D7 Update ReadMe" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;b&gt;Disclaimer:&lt;/b&gt;In his tardiness defense, &lt;a href="http://homepages.borland.com/aohlsson/blog_beta/" title="Anders Ohlsson" target="_blank"&gt;Anders Ohlsson&lt;/a&gt; stated that he was "..waiting for all SKUs to get signed off. The README could change if some last minute gotchas are found."&lt;br /&gt;&lt;p&gt;The definitive version should be on &lt;a href="http://community.borland.com/" title="BDN" target="_blank"&gt;BDN&lt;/a&gt; later this week.&lt;br /&gt; &lt;script type="text/javascript"&gt;LinktoComments('D7Update')&lt;/script&gt;&lt;br /&gt;&lt;noscript&gt;&lt;a href="http://enetation.co.uk//comments.php?user=dclegg&amp;commentid=&lt;D7Update&gt; "&gt;Comment&lt;/a&gt;&lt;/noscript&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-108363673935705273?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/108363673935705273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=108363673935705273' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108363673935705273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108363673935705273'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/05/beat-you-to-it-anders-malcolm-groves.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-108322067990528001</id><published>2004-04-29T18:37:00.000+12:00</published><updated>2004-05-04T15:20:32.373+12:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Psst! Wanna buy a House?&lt;/h2&gt;&lt;br /&gt;If anyone is in the market for a nice property on the Central Coast of New South Wales, Australia, do I have &lt;a href="http://www.realestate.com.au/cgi-bin/rsearch?a=o&amp;id=101513225&amp;cu=&amp;ag=" title="My house for sale" target="_blank"&gt;a deal for you&lt;/a&gt;! I'll even throw in a free set of steak knives. :-)&lt;br /&gt; &lt;script type="text/javascript"&gt;LinktoComments('House')&lt;/script&gt;&lt;br /&gt;&lt;noscript&gt;&lt;a href="http://enetation.co.uk//comments.php?user=dclegg&amp;commentid=&lt;House&gt; "&gt;Comment&lt;/a&gt;&lt;/noscript&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-108322067990528001?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/108322067990528001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=108322067990528001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108322067990528001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108322067990528001'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/04/psst-wanna-buy-house-if-anyone-is-in.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-108312084513760965</id><published>2004-04-28T14:54:00.000+12:00</published><updated>2004-04-28T15:01:48.590+12:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Dumb Newsgroup Questions&lt;/h2&gt;&lt;br /&gt;As I foray deeper into the wonderful world of C# and the .NET Framework, I find myself hanging out in the Microsoft newsgroups more and more. Now is it just me, or is the standard of questions asked there generally lower? Here are a couple I encountered today :-&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;i&gt;When I click on any of the Toolbar Buttons, application is terminating after executing the code in toolbar buttons.  Can anyone tell me why is this happening and help me to solve this?&lt;/i&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;and&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;i&gt;Any could help my find how to create the code for the following algorythm:&lt;br /&gt;&lt;br /&gt;In1: 10000000&lt;br /&gt;In2: 00000000000&lt;br /&gt;&lt;br /&gt;the algorythm runs and this is the output:&lt;br /&gt;&lt;br /&gt;01A6DC6B07262F69  &lt;/i&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;However, I did like the response to this one...&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;i&gt;int i, j, k;&lt;br /&gt;j=in1=10000000?10000000:0;&lt;br /&gt;k=in2=00000000000?00000000000:0;&lt;br /&gt;for(i=0; i&lt;j; ++i){&lt;br /&gt;   for(k=0; j&lt;i; ++j){&lt;br /&gt;      if(i&lt;k&amp;&amp;j&lt;k||k&lt;j&amp;&amp;i==i)&lt;br /&gt;         Thread.Sleep(j);&lt;br /&gt;}&lt;br /&gt;Console.WriteLine("01A6DC6B07262F69");&lt;br /&gt;&lt;/i&gt;&lt;br /&gt; &lt;script type="text/javascript"&gt;LinktoComments('Dumb Newsgroup Questions')&lt;/script&gt;&lt;br /&gt;&lt;noscript&gt;&lt;a href="http://enetation.co.uk//comments.php?user=dclegg&amp;commentid=&lt;Dumb Newsgroup Questions&gt; "&gt;Comment&lt;/a&gt;&lt;/noscript&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-108312084513760965?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/108312084513760965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=108312084513760965' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108312084513760965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108312084513760965'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/04/dumb-newsgroup-questions-as-i-foray.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-108302530140214574</id><published>2004-04-27T12:21:00.000+12:00</published><updated>2004-04-27T12:24:44.903+12:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Where vs Joins&lt;/h2&gt;&lt;br /&gt;&lt;a href="http://bdn.borland.com/article/0,1410,32042,00.html" title="Where vs Joins Article" target="_blank"&gt;Interesting article&lt;/a&gt; comparing using WHERE and JOIN statements to select from multiple SQL RDBMS tables.&lt;br /&gt; &lt;script type="text/javascript"&gt;LinktoComments('Where vs Joins')&lt;/script&gt;&lt;br /&gt;&lt;noscript&gt;&lt;a href="http://enetation.co.uk//comments.php?user=dclegg&amp;commentid=&lt;Where vs Joins&gt; "&gt;Comment&lt;/a&gt;&lt;/noscript&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-108302530140214574?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/108302530140214574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=108302530140214574' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108302530140214574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108302530140214574'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/04/where-vs-joins-interesting-article.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-108268870942113608</id><published>2004-04-23T14:51:00.000+12:00</published><updated>2004-04-23T14:55:34.513+12:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Program like Elvis used to&lt;/h2&gt;&lt;br /&gt;&lt;a href="http://www.go-l.com/monitors/grand_canyon/features/index.htm" title="Cool Multi-monitor setup" target="_blank"&gt;This&lt;/a&gt; would make for one seriously cool development setup. API reference on monitor 1, IDE on 2 &amp; 3, newsreader on 4...&lt;br /&gt; &lt;script type="text/javascript"&gt;LinktoComments('Elvis')&lt;/script&gt;&lt;br /&gt;&lt;noscript&gt;&lt;a href="http://enetation.co.uk//comments.php?user=dclegg&amp;commentid=&lt;Elvis&gt; "&gt;Comment&lt;/a&gt;&lt;/noscript&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-108268870942113608?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/108268870942113608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=108268870942113608' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108268870942113608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108268870942113608'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/04/program-like-elvis-used-to-this-would.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-108268254153014895</id><published>2004-04-23T13:09:00.000+12:00</published><updated>2004-04-23T14:50:00.436+12:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Macros.. a little slow on the uptake&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I've been using IDEs (mainly Delphi) for nearly 6 years, but I've only recently discovered the joys of keystroke macros. For the uninitiated, they provide the mechanism to save a series of keystrokes which can then be repeatedly played back. Very nice. I first started using them in VS.NET 2003 to assist with the creating of properties from cut'n'pasted member declarations, and since then have never looked back. Here are some common keyboard shortcuts to assist with using them:&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;b&gt;Delphi 5 (Default Key Mapping)&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Ctrl+Shift+R&lt;/i&gt; - Start/stop recording macro&lt;br /&gt;&lt;i&gt;Ctrl+Shift+P&lt;/i&gt; - Play back macro&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;b&gt;Visual Studio.NET 2003 (Default Key Mapping)&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Ctrl+Shift+R &lt;/i&gt;- Start/stop recording macro&lt;br /&gt;&lt;i&gt;Ctrl+Shift+P&lt;/i&gt; - Play back macro&lt;br /&gt;&lt;i&gt;Alt+F8&lt;/i&gt; - Macros Explorer&lt;br /&gt;&lt;i&gt;Alt+F11&lt;/i&gt; - Macros IDE&lt;br /&gt;&lt;br&gt;&lt;br /&gt;Visual Studio also gives the ability to save custom macros, which is a very handy feature. There is a &lt;a href="http://qc.borland.com/" title="Quality Central" target="_blank"&gt;Quality Central&lt;/a&gt; request for it to be implemented in the Delphi IDE &lt;a href="http://qc.borland.com/wc/wc.exe/details?ReportID=923" title="Macro QC request" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;LinktoComments('&lt;Macros&gt;')&lt;/script&gt;&lt;br /&gt;&lt;noscript&gt;&lt;a href="http://enetation.co.uk//comments.php?user=dclegg&amp;commentid=&lt;Macros&gt; "&gt;Comment&lt;/a&gt;&lt;/noscript&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-108268254153014895?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/108268254153014895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=108268254153014895' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108268254153014895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108268254153014895'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/04/macros.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-108268082886457315</id><published>2004-04-23T12:40:00.000+12:00</published><updated>2004-04-23T12:44:41.466+12:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;The pressure is on&lt;/h2&gt;&lt;br /&gt;&lt;a href="http://homepages.borland.com/aohlsson/blog_beta/" title="Anders Ohlsson's Blog" target="_blank"&gt;Anders Ohlsson&lt;/a&gt;  has added me to his blog roll. So the pressure is now on to keep it updated and interesting.&lt;br /&gt; &lt;script type="text/javascript"&gt;LinktoComments('The pressure is on')&lt;/script&gt;&lt;br /&gt;&lt;noscript&gt;&lt;a href="http://enetation.co.uk//comments.php?user=dclegg&amp;commentid=&lt;The pressure is on&gt; "&gt;Comment&lt;/a&gt;&lt;/noscript&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-108268082886457315?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/108268082886457315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=108268082886457315' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108268082886457315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108268082886457315'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/04/pressure-is-on-anders-ohlsson-has.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-108260896527616925</id><published>2004-04-22T16:42:00.000+12:00</published><updated>2004-04-22T16:45:43.733+12:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;My HTML not up to scratch&lt;/h2&gt;&lt;br /&gt;It seems that my HTML skills (or lack thereof) are not up to scratch. I need to figure out how to format my blog entries so that the ATOM and RSS feeds seperate the title from the rest of the text. :- &lt;script type="text/javascript"&gt;LinktoComments('My HTML not up to scratch')&lt;/script&gt;&lt;br /&gt;&lt;noscript&gt;&lt;a href="http://enetation.co.uk//comments.php?user=dclegg&amp;commentid=&lt;My HTML not up to scratch&gt; "&gt;Comment&lt;/a&gt;&lt;/noscript&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-108260896527616925?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/108260896527616925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=108260896527616925' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108260896527616925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108260896527616925'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/04/my-html-not-up-to-scratch-it-seems.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-108260509421696503</id><published>2004-04-22T15:38:00.000+12:00</published><updated>2004-04-22T16:39:07.123+12:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;D9 Gossip&lt;/h2&gt;&lt;br /&gt;&lt;br&gt;Danny Thorpe posted some &lt;a href="http://www.dcleggsblog.blogspot.com/" title="juicy gossip" target="_blank"&gt;juicy gossip&lt;/a&gt; hinting at some features being worked on for the next Delphi release.&lt;br /&gt; &lt;script type="text/javascript"&gt;LinktoComments('D9 Gossip')&lt;/script&gt;&lt;br /&gt;&lt;noscript&gt;&lt;a href="http://enetation.co.uk//comments.php?user=dclegg&amp;commentid=&lt;D9 Gossip&gt; "&gt;Comment&lt;/a&gt;&lt;/noscript&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-108260509421696503?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/108260509421696503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=108260509421696503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108260509421696503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108260509421696503'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/04/d9-gossip-danny-thorpe-posted-some.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-108250288663523425</id><published>2004-04-21T11:14:00.000+12:00</published><updated>2004-04-22T16:19:00.966+12:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Page 23&lt;/h2&gt;&lt;br /&gt;"Most Delphi application development can be done with little or no awareness of the Windows operating system humming beneath the VCL." - Delphi Component Design by Danny Thorpe&lt;br /&gt;&lt;br /&gt;The meme says:&lt;br /&gt;&lt;br /&gt;Grab the nearest book.&lt;br /&gt;Open the book to page 23.&lt;br /&gt;Find the fifth sentence.&lt;br /&gt;Post the text of the sentence in your journal along with these instructions&lt;br /&gt;&lt;br /&gt;(watch how it is spreading on the blogsphere &lt;a href="http://feedster.com/search.php?hl=en&amp;ie=UTF-8&amp;q=%22page+23%22&amp;btnG=Search&amp;sort=date" title="here" target="_blank"&gt;here&lt;/a&gt; or &lt;a href="http://bloglines.com/search?r=0&amp;q=%22page+23%22&amp;submit=Search" title="here" target="_blank"&gt;here&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;via &lt;a href="http://homepages.borland.com/aohlsson/blog_beta/" title="Anders Ohlsson's weblog" target="_blank"&gt;Anders Ohlsson's&lt;/a&gt; weblog.&lt;br /&gt;&lt;br /&gt; &lt;script type="text/javascript"&gt;LinktoComments('Page 23')&lt;/script&gt;&lt;br /&gt;&lt;noscript&gt;&lt;a href="http://enetation.co.uk//comments.php?user=dclegg&amp;commentid=&lt;Page 23&gt;"&gt;Comment&lt;/a&gt;&lt;/noscript&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-108250288663523425?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/108250288663523425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=108250288663523425' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108250288663523425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108250288663523425'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/04/page-23-most-delphi-application.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-108000166517958358</id><published>2004-03-23T12:27:00.000+12:00</published><updated>2004-04-22T16:20:05.436+12:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;D8 Trial Version Available&lt;/h2&gt;&lt;br /&gt;The &lt;a href="http://www.borland.com/products/downloads/download_delphi_net.html" title="Delphi 8 Trial version" target="_blank"&gt;Delphi 8 for .NET Trial&lt;/a&gt; is now available for download.&lt;br /&gt; &lt;script type="text/javascript"&gt;LinktoComments('3')&lt;/script&gt;&lt;br /&gt;&lt;noscript&gt;&lt;a href="http://enetation.co.uk//comments.php?user=dclegg&amp;commentid=&lt;3&gt; "&gt;Comment&lt;/a&gt;&lt;/noscript&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-108000166517958358?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/108000166517958358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=108000166517958358' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108000166517958358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/108000166517958358'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/03/d8-trial-version-available-delphi-8.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-107906721970221196</id><published>2004-03-12T17:53:00.000+13:00</published><updated>2004-04-22T16:20:34.013+12:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;What's new in ADO.NET version 2.0&lt;/h2&gt;&lt;br /&gt;Found an interesting &lt;a href="http://web.zdnet.com.au/builder/program/windows/story/0,2000035027,20283155,00.htm?" title="What's new in ADO.NET version 2.0" target="_blank"&gt;article&lt;/a&gt; outlining some of the new features in ADO.NET v2.0. The ObjectSpaces concept sounds particularly interesting, although its support for SQL Server only diminishes its usefulness somewhat.&lt;br /&gt; &lt;script type="text/javascript"&gt;LinktoComments('2')&lt;/script&gt;&lt;br /&gt;&lt;noscript&gt;&lt;a href="http://enetation.co.uk//comments.php?user=dclegg&amp;commentid=2"&gt;Comment&lt;/a&gt;&lt;/noscript&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-107906721970221196?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/107906721970221196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=107906721970221196' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/107906721970221196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/107906721970221196'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/03/whats-new-in-ado.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-107904818335819950</id><published>2004-03-12T12:36:00.000+13:00</published><updated>2004-08-20T14:49:33.093+12:00</updated><title type='text'>C# Naming Standards</title><content type='html'>As the C# pioneer at &lt;a href="http://www.ebetgamingsystems.com/" title="Ebet Gaming Systems" target="_blank"&gt;our Company&lt;/a&gt;, I've taken it upon myself to decide upon some C# coding standards. These are largely based on the&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconnetframeworkdesignguidelines.asp" title="Microsoft .NET Design Guidelines for Class Library Developers" target="_blank"&gt;Microsoft design guidelines&lt;/a&gt;, but have been changed to make them (IMHO) friendlier to other .NET languages (e.g. &lt;a href="http://www.borland.com/delphi_net/" title="Delphi 8 for the Microsoft .NET Framework" target="_blank"&gt;Delphi&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;As a result, I've tentatively decided on the following naming standards (I've only stated the ones that differ from the MS recommendations):-&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Class instance members&lt;/i&gt;&lt;br /&gt;Using camel casing prefixed by m (e.g. mSomeValue)&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Method arguments&lt;/i&gt;&lt;br /&gt;Using camel casing prefixed by a (e.g. aSomeValue)&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Property names&lt;/i&gt;&lt;br /&gt;Do &lt;b&gt;not&lt;/b&gt; expose a property with the same name as its underlying type. This goes directly against what Microsoft recommends, but makes it easier for compilers that don't employ 'try, try again' scope resolution.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-107904818335819950?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/107904818335819950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/107904818335819950'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/03/c-naming-standards-as-c-pioneer-at-our.html' title='C# Naming Standards'/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-107904742325844922</id><published>2004-03-12T12:23:00.000+13:00</published><updated>2004-04-22T16:21:24.390+12:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Another reason to hate VS.NET 2003&lt;/h2&gt;&lt;br /&gt;Why oh why does the 'Apply to all items' setting not persist across multiple projects in a solution when working with SourceSafe integration?  There is nothing more annoying than having to answer the same question multiple times when you were under the impression you had already told SourceSafe your intentions.&lt;br /&gt;&lt;br /&gt;Reminds me of my first SourceSafe install experience. Apart from the fact that the install process required 6 (no exaggeration) reboots, the following dialog took place (paraphrased, but you get the idea)&lt;br /&gt;&lt;br /&gt;Stupid SourceSafe Install Script: Install completed successfully. Reboot the computer now?&lt;br /&gt;Me: No&lt;br /&gt;SSIS: 'The computer has to be rebooted in order to complete the installation. The computer will reboot now.&lt;br /&gt;Me: $#%!!&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-107904742325844922?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/107904742325844922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=107904742325844922' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/107904742325844922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/107904742325844922'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/03/another-reason-to-hate-vs.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-107818437838435474</id><published>2004-03-02T12:39:00.000+13:00</published><updated>2004-04-22T16:21:41.546+12:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Blog This!&lt;/h2&gt;&lt;br /&gt;I am testing some new blogging software called &lt;a href="http://www.wbloggar.com/" title="w.bloggar" target="_blank"&gt;w.bloggar&lt;/a&gt;. It should allow me to post blog entries without needing to use a browser.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-107818437838435474?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/107818437838435474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=107818437838435474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/107818437838435474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/107818437838435474'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2004/03/blog-this-i-am-testing-some-new.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-106759679693420659</id><published>2003-10-31T23:39:00.000+13:00</published><updated>2004-04-22T16:21:59.200+12:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Mmm... Nice RSS&lt;/h2&gt;&lt;br /&gt;Found a very nice &lt;a href="http://www.feeddemon.com/feeddemon/index.asp"&gt;RSS newsfeed reader&lt;/a&gt; today. Looks really schmick AND is written in Delphi :-)&lt;br /&gt;&lt;br /&gt;If only I had RSS capabilities on my Blog. Perhaps I should look for a new home....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-106759679693420659?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/106759679693420659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=106759679693420659' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/106759679693420659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/106759679693420659'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2003/10/mmm.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-106671209910593782</id><published>2003-10-21T17:54:00.000+13:00</published><updated>2004-04-22T16:22:39.436+12:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Bye Bye IE&lt;/h2&gt;&lt;br /&gt;I've recently switched to &lt;a href="http://www.mozilla.org/"&gt;Mozilla Firebird&lt;/a&gt; for all my browsing needs, and so far I like what I see. Its lean, quick and not from Micro$oft :-)&lt;br /&gt;&lt;br /&gt;Also, its name is the same as my favourite &lt;a href="http://firebird.sourceforge.net/"&gt;Open Source Database&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-106671209910593782?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/106671209910593782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=106671209910593782' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/106671209910593782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/106671209910593782'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2003/10/bye-bye-ie-ive-recently-switched-to.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-106513991592065491</id><published>2003-10-03T12:11:00.000+12:00</published><updated>2003-10-03T12:20:06.936+12:00</updated><title type='text'></title><content type='html'>&lt;a href="http://bdn.borland.com/article/0,1410,29951,00.html"&gt;Open Letter to the Delphi Community&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Borland have announced that the next version of Delphi (code named Octane) will be concentrating on .NET. I will be following the Borland newsgroups with interest to see the fallout after this one. I am sure there will be mucho heated debate, considering their initial intention was to ship Octane with .NET and Win32 support.&lt;br /&gt;&lt;br /&gt;Personally, I'd prefer to see two solid releases rather than a hurried one targetting both platforms. I can also understand Borlands decision to target the .NET framework first, considering they already have a Win32 dev tool.&lt;br /&gt;&lt;br /&gt;Curses to them for making the announcement today though, as its hard enough keeping motivated on a Friday. Now I'll never get any work done ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-106513991592065491?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/106513991592065491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=106513991592065491' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/106513991592065491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/106513991592065491'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2003/10/open-letter-to-delphi-community.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-106358805952048356</id><published>2003-09-15T13:07:00.000+12:00</published><updated>2003-09-15T13:07:39.600+12:00</updated><title type='text'></title><content type='html'>It would be good to have the blog show my local time, rather than the server time.&lt;br /&gt;&lt;br /&gt;Really posted by David on Monday, September 15, 2003 at 10:57 am&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-106358805952048356?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/106358805952048356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=106358805952048356' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/106358805952048356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/106358805952048356'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2003/09/it-would-be-good-to-have-blog-show-my.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5741455.post-106358785990603456</id><published>2003-09-15T13:04:00.000+12:00</published><updated>2003-09-15T13:04:19.990+12:00</updated><title type='text'></title><content type='html'>This is a test entry into my first blog. What better entry than one pointing to another blog? ;-)&lt;br /&gt;&lt;a href="http://homepages.borland.com/abauer/"&gt;Allen Bauer's blog...&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5741455-106358785990603456?l=dcleggsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dcleggsblog.blogspot.com/feeds/106358785990603456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5741455&amp;postID=106358785990603456' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/106358785990603456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5741455/posts/default/106358785990603456'/><link rel='alternate' type='text/html' href='http://dcleggsblog.blogspot.com/2003/09/this-is-test-entry-into-my-first-blog.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/06345522383537221090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
