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

<channel>
	<title>DaVinci Unlimited Software &#187; Delphi</title>
	<atom:link href="http://www.davinciunltd.com/category/delphi/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.davinciunltd.com</link>
	<description>Jim McKeeth's blog on creative and innovative Delphi programming.</description>
	<lastBuildDate>Wed, 09 Nov 2011 10:39:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Web Based IDE&#8217;s</title>
		<link>http://www.davinciunltd.com/2011/03/web-based-ides/</link>
		<comments>http://www.davinciunltd.com/2011/03/web-based-ides/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 00:43:55 +0000</pubDate>
		<dc:creator>Jim McKeeth</dc:creator>
				<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[dotnet]]></category>
		<category><![CDATA[free stuff]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.davinciunltd.com/?p=126</guid>
		<description><![CDATA[I started a computer club at my son&#8217;s middle school. One of the limitations is that no software can be installed, and there are no development tools on the computers. So I set out to find web based IDE&#8217;s where we can write and run code via the web browser. This is what I found.
W3Schools.com
I [...]]]></description>
			<content:encoded><![CDATA[<p>I started a computer club at my son&#8217;s middle school. One of the limitations is that no software can be installed, and there are no development tools on the computers. So I set out to find web based IDE&#8217;s where we can write and run code via the web browser. This is what I found.</p>
<p><strong>W3Schools.com</strong><img style="float: right;" title="w3schools.com(thumb).jpg" src="http://www.davinciunltd.com/wp-content/uploads/2011/03/w3schools.comthumb.jpg" border="0" alt="w3schools.com" width="200" height="150" /></p>
<p>I started with w3schools.com, which is a favorite reference site of mine that contains tutorials on pretty much every web technology imaginable, including HTML, JavaScript, SQL, CSS, PHP, XML, SOAP, etc.</p>
<p>For the client side technologies they have a great &#8220;try it yourself&#8221; functionality where you can enter JavaScript, etc. and have it display the output for you.</p>
<p>The process is to edit in the window on the left, then click the &#8220;Edit and Click Me&#8221; button to view the output on the right. There is no debugging or error reports, you just see what comes out. Makes it really hard to track down JavaScript typos.</p>
<p>It would appear some of w3schools content <a href="http://w3fools.com/">isn&#8217;t completely accurate, so use with caution</a>.</p>
<p><a href="http://JSFiddle.net/"><strong>JSFiddle.net</strong></a><a href="http://JSFiddle.net/"><img style="float: right;" title="jsfiddle.net(thumb).jpg" src="http://www.davinciunltd.com/wp-content/uploads/2011/03/jsfiddle.netthumb.jpg" border="0" alt="Jsfiddle.net" width="200" height="150" /></a></p>
<p>If you are developing with HTML/CSS &amp; JavaScript and one of the common public frameworks then check out JSFiddle. It offers a resizable split view where you can edit your HTML, JavaScript and CSS all independently, and then see the combined result. Additionally it offers the option to save, share and reload &#8220;fiddles&#8221;.</p>
<p>Other nice features include:</p>
<ul>
<li>Syntax highlighting</li>
<li>TidyUp code formatting</li>
<li>JSLint validation</li>
<li>Access to a wide selection of JavaScript frameworks</li>
<li>Discussion and forks of public fiddles</li>
</ul>
<p>It is currently in Alpha with a limited number of public alpha accounts available</p>
<p><a href="http://ideone.com/"><strong>IDEone.com</strong><img style="float: right;" title="ideone.com(thumb).jpg" src="http://www.davinciunltd.com/wp-content/uploads/2011/03/ideone.comthumb.jpg" border="0" alt="Ideone com thumb" width="200" height="150" /></a></p>
<p>This is an honest to goodness web based IDE and compiler. Type the code with syntax highlighting, compile it, provide input,</p>
<p>What is ideone?<br />
Ideone is something more than a pastebin; it&#8217;s an online compiler and debugging tool which allows to compile and run code online in more than 40 programming languages, including Pascal.</p>
<p>How to use ideone?<br />
Choose a programming language, enter your source code and input data into text boxes. Then check or uncheck run code (whether to execute your program) and private (whether not to list your code in the recent codes page) checkboxes, click the submit button and watch your snippet being executed.</p>
<p><a href="http://jsbin.com/"><strong>jsbin.com</strong></a></p>
<p><a href="http://jsbin.com/"> </a></p>
<p><a href="http://jsbin.com/"><img style="float: right;" title="jsbin.com(thumb).jpg" src="http://www.davinciunltd.com/wp-content/uploads/2011/03/jsbin.comthumb2.jpg" border="0" alt="Jsbin com thumb" width="200" height="150" /></a></p>
<p>JS Bin is an open source collaborative JavaScript debugging tool.<br />
Similar it offers HTML and JavaScript editing and previewing. It has a nice and clean user interface and also includes common JavaScript frameworks.</p>
<p>Error checking is provided by the JSHint project. Like JSLint with the addition of an API.</p>
<p>JSBin is completely open source, so you can <a href="https://github.com/remy/jsbin">download it</a> and implement it on your own server.</p>
<p><a href="http://Snipt.net/"><strong>Snipt.net</strong><img style="float: right;" title="Snipt.net(thumb).jpg" src="http://www.davinciunltd.com/wp-content/uploads/2011/03/Snipt.netthumb.jpg" border="0" alt="Snipt.net" width="200" height="145" /></a></p>
<p>Snipt is your collection of frequently used commands or code snippets.</p>
<p>Because even Subversion gurus forget the &#8217;svn merge&#8217; syntax sometimes.</p>
<p>It&#8217;s good for storing small pieces of code or commands that you use rather frequently, and will probably forget.</p>
<p>Not really an IDE. No running or debugging. It will syntax highlight the code you upload though.</p>
<p><a href="http://pastie.org/"><strong>pastie.org</strong></a><a href="http://pastie.org/"><img style="float: right;" title="pastie.org(thumb).jpg" src="http://www.davinciunltd.com/wp-content/uploads/2011/03/pastie.orgthumb.jpg" border="0" alt="Pastie org thumb" width="200" height="150" /></a></p>
<p>Pastie is a lot like Snipit. You can paste in bits of code and it will provide syntax highlighting and the ability to share it with others.</p>
<p>Pastie syntax highlights a number of different languages, but offers no execution, debugging, etc. Useful for sharing code. You can also search, but it is a plain text search and you don&#8217;t specific which language you are searching for, nor is there any useful meta information like description, title, etc.</p>
<p>A few others that I didn&#8217;t look to closely at include:</p>
<ul>
<li><a href="http://csdesk.com/">csdesk.com</a> &#8211; Similar to jsbin and jsfiddle, except focused on HTML and CSS.</li>
<li><a href="http://cloud9ide.com/">Cloud9IDE.com</a> &#8211; JavaScript focused. Requires a sign up for a 30 day trial.</li>
<li><a href="http://coderun.com/">CodeRun.com</a>- I had high hopes, but it didn&#8217;t work in most browsers I tested it in. This one supports development in Silverlight, C#, PHP, ASP.NET and a number of other technologies, with syntax highlighting, debugging, etc. Will keep my eye on this one.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.davinciunltd.com/2011/03/web-based-ides/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Order of Enum in Case Statement</title>
		<link>http://www.davinciunltd.com/2008/07/order-of-enum-in-case-statement/</link>
		<comments>http://www.davinciunltd.com/2008/07/order-of-enum-in-case-statement/#comments</comments>
		<pubDate>Sun, 13 Jul 2008 00:16:58 +0000</pubDate>
		<dc:creator>Jim McKeeth</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Assembly]]></category>
		<category><![CDATA[disassembly]]></category>
		<category><![CDATA[Enumerations]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[Win32]]></category>

		<guid isPermaLink="false">http://www.davinciunltd.com/2008/07/order-of-enum-in-case-statement/</guid>
		<description><![CDATA[A while back my manager asked me if the order of the enums in a Delphi case statement changed performance: i.e. Enums in order being faster then those not.&#160; I was pretty sure it didn&#8217;t, but thought it was worth checking out.&#160; Time for a test application and some disassembly . . . 

Here are [...]]]></description>
			<content:encoded><![CDATA[<p>A while back my manager asked me if the order of the enums in a Delphi case statement changed performance: i.e. Enums in order being faster then those not.&#160; I was pretty sure it didn&#8217;t, but thought it was worth checking out.&#160; Time for a test application and some disassembly . . . </p>
<p><span id="more-72"></span></p>
<p>Here are my types and variables, which are the same for both examples.</p>
<pre><code><strong>type</strong></code>
  TMyEnum = (my1, my2, my3, my4);</pre>
<pre><code class="keyword"><strong>var</strong></code>
  myEnum: TMyEnum;
  val: Char;</pre>
<p>Here are the two examples, side by side, with assembly code to follow.&#160; BTW, compiler optimization was turned <em>on</em>.</p>
<table cellspacing="0" cellpadding="2" width="400" border="0">
<tbody>
<tr>
<th width="49%" colspan="2">Case enum <em>in</em> order</th>
<th width="49%" colspan="2">Case enum <em>out of</em> order</th>
</tr>
<tr>
<td colspan="2">
<pre><code></code>  myEnum := my1;
  <code><strong>case</strong></code> myEnum <code><strong>of</strong></code>
    my1: val := <code class="quote">'1'</code>;
    my2: val := <code class="quote">'2'</code>;
    my3: val := <code class="quote">'3'</code>;
    my4: val := <code class="quote">'4'</code>;
  <code><strong>else</strong></code>
    val := <code class="quote">'?'</code>;
  <code><strong>end</strong></code>;</pre>
</td>
<td colspan="2">
<pre><code></code>  myEnum := my1;
  <code><strong>case</strong></code> myEnum <code><strong>of</strong></code>
    my3: val := <code class="quote">'3'</code>;
    my1: val := <code class="quote">'1'</code>;
    my4: val := <code class="quote">'4'</code>;
    my2: val := <code class="quote">'2'</code>;
  <code><strong>else</strong></code>
    val := <code class="quote">'?'</code>;
  <code><strong>end</strong></code>;</pre>
</td>
</tr>
<tr>
<th colspan="4"><em>&#8212;&#8211; Disassembly &#8212;&#8211;</em></th>
</tr>
<tr>
<td colspan="2"><em>case myEnum of</em></td>
<td colspan="2"><em>case myEnum of</em></td>
</tr>
<tr>
<td width="25%">BF9E</td>
<td width="24%">sub al,$01</td>
<td width="24%">C00A</td>
<td width="25%">sub al,$01</td>
</tr>
<tr>
<td>BFA0</td>
<td>jb $bfae</td>
<td>C00C</td>
<td>jb $c01e</td>
</tr>
<tr>
<td>BFA2</td>
<td>jz $bfb2</td>
<td>C00E</td>
<td>jz $c026</td>
</tr>
<tr>
<td>BFA4</td>
<td>dec al</td>
<td>C010</td>
<td>dec al</td>
</tr>
<tr>
<td>BFA6</td>
<td>jz $bfb6</td>
<td>C012</td>
<td>jz $c01a</td>
</tr>
<tr>
<td>BFA8</td>
<td>dec al</td>
<td>C014</td>
<td>dec al</td>
</tr>
<tr>
<td>BFAA</td>
<td>jz $bfba</td>
<td>C016</td>
<td>jz $c022</td>
</tr>
<tr>
<td>BFAC</td>
<td>jmp $bfbe</td>
<td>C018</td>
<td>jmp $c02a</td>
</tr>
<tr>
<td colspan="2"><em>my1: val := &#8216;1&#8242;;</em></td>
<td colspan="2"><em>my3: val := &#8216;3&#8242;;</em></td>
</tr>
<tr>
<td>BFAE</td>
<td>mov bl,$31</td>
<td>C01A</td>
<td>mov bl,$33</td>
</tr>
<tr>
<td>BFB0</td>
<td>jmp $bfc0</td>
<td>C01C</td>
<td>jmp $c02c</td>
</tr>
<tr>
<td colspan="2"><em>my2: val := &#8216;2&#8242;;</em></td>
<td colspan="2"><em>my1: val := &#8216;1&#8242;;</em></td>
</tr>
<tr>
<td>BFB2</td>
<td>mov bl,$32</td>
<td>C01E</td>
<td>mov bl,$31</td>
</tr>
<tr>
<td>BFB4</td>
<td>jmp $bfc0</td>
<td>C020</td>
<td>jmp $c02c</td>
</tr>
<tr>
<td colspan="2"><em>my3: val := &#8216;3&#8242;;</em></td>
<td colspan="2"><em>my4: val := &#8216;4&#8242;;</em></td>
</tr>
<tr>
<td>BFB6</td>
<td>mov bl,$33</td>
<td>C022</td>
<td>mov bl,$34</td>
</tr>
<tr>
<td>BFB8</td>
<td>jmp $bfc0</td>
<td>C024</td>
<td>jmp $c02c</td>
</tr>
<tr>
<td colspan="2"><em>my4: val := &#8216;4&#8242;;</em></td>
<td colspan="2"><em>my2: val := &#8216;2&#8242;;</em></td>
</tr>
<tr>
<td>BFBA</td>
<td>mov bl,$34</td>
<td>C026</td>
<td>mov bl,$32</td>
</tr>
<tr>
<td>BFBC</td>
<td>jmp $bfc0</td>
<td>C028</td>
<td>jmp $c02c</td>
</tr>
<tr>
<td colspan="2"><em>val := &#8216;?&#8217;;</em></td>
<td colspan="2"><em>val := &#8216;?&#8217;;</em></td>
</tr>
<tr>
<td>BFBE</td>
<td>mov bl,$20</td>
<td>C02A</td>
<td>mov bl,$20</td>
</tr>
</tbody>
</table>
<p>Same number of lines of assembly code. There may be some internal CPU optimization, but I don&#8217;t expect there is any. </p>
<p><strong>Conclusion: </strong>Order of the enum in the case statement does not change performance.&#160; Anyone else have any details I missed, or evidence to the contrary?&#160; I guess the next step is to test it in .NET and IL. . . . </p>
]]></content:encoded>
			<wfw:commentRss>http://www.davinciunltd.com/2008/07/order-of-enum-in-case-statement/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Beyond Compare 3 Beta</title>
		<link>http://www.davinciunltd.com/2008/07/beyond-compare-3-beta/</link>
		<comments>http://www.davinciunltd.com/2008/07/beyond-compare-3-beta/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 07:24:51 +0000</pubDate>
		<dc:creator>Jim McKeeth</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[kylix]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[scc]]></category>

		<guid isPermaLink="false">http://www.davinciunltd.com/2008/07/beyond-compare-3-beta/</guid>
		<description><![CDATA[One of my favorite tools for software development beyond Delphi is Beyond Compare.  It is the best tool for comparing and merging files, directories, etc.  It is also written in Delphi.
They happen to have a Beta for version 3 available now.  Beyond a whole slew of new features for comparing and merging source files, they [...]]]></description>
			<content:encoded><![CDATA[<p>One of my favorite tools for software development beyond Delphi is Beyond Compare.  It is the best tool for comparing and merging files, directories, etc.  It is also written in Delphi.</p>
<p>They happen to have a <a href="http://scootersoftware.com/beta3">Beta for version 3 available now</a>.  Beyond a whole slew of new features for comparing and merging source files, they are also now running natively on Linux.  I sent them an email about the Linux support and they are using <strong><em>Kylix</em></strong> along with some GUI wrappers of their own to make development smoother.</p>
<p><a href="http://scootersoftware.com/beta3/moreinfo.php?zz=screenshot&amp;shot=TextMerge"><img src="http://scootersoftware.com/beta3/images/TextMerge2.jpg" border="0" alt="click for screenshot" align="right" /></a>They have a full list of the <a href="http://scootersoftware.com/beta3/moreinfo.php?zz=newfeatures">cool features in version 3</a>, along with <a href="http://scootersoftware.com/shop.php?c=upgrades">upgrade information</a>.  One of the really cool features I am looking forward to is the 3-way text merge.  I also really like the image comparison plug-in they offer.</p>
<p>I have found it is an indispensable tool when I am moving files between one computer to another.  If the process fails part way through do to network issues or whatever, Beyond Compare effectively lets me resume where I left off.  Additionally, I can quickly see if some of the files are out of date or corrupted.  A great way to trouble shoot system differences in testing software.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davinciunltd.com/2008/07/beyond-compare-3-beta/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Embarcadero Keeps Coming Up</title>
		<link>http://www.davinciunltd.com/2008/07/embarcadero-keeps-coming-up/</link>
		<comments>http://www.davinciunltd.com/2008/07/embarcadero-keeps-coming-up/#comments</comments>
		<pubDate>Thu, 03 Jul 2008 07:08:41 +0000</pubDate>
		<dc:creator>Jim McKeeth</dc:creator>
				<category><![CDATA[CodeGear]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Embarcadero]]></category>

		<guid isPermaLink="false">http://www.davinciunltd.com/2008/07/embarcadero-keeps-coming-up/</guid>
		<description><![CDATA[


The building I work in is owned by Embarcadaro Capital Partners (See picture of the directory in the lobby.)
 Our company headquarters is moving to the corner of The Embarcadaro and Harrison in San Francisco, CA.
 The primary tool I use at work is Delphi, which was just purchased by Embarcadero Technologies.

Seems to be a [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px; margin-bottom: 10px;"><a title="photo sharing" href="http://www.flickr.com/photos/jimmckeeth/2632525451/"><img style="border: solid 2px #000000;" src="http://farm4.static.flickr.com/3158/2632525451_da64fbdda4_m.jpg" alt="" /></a><span style="font-size: 0.9em; margin-top: 0px;"><a href="http://www.flickr.com/people/jimmckeeth/"></a><br />
</span></div>
<ul>
<li>The building I work in is owned by Embarcadaro Capital Partners (See picture of the directory in the lobby.)</li>
<li> Our company headquarters is moving to the corner of <a href="http://maps.google.com/maps?f=q&amp;hl=en&amp;geocode=&amp;q=The+Embarcadero+%26+Harrison,+San+Francisco,+CA&amp;sll=37.789319,-122.389412&amp;sspn=0.006122,0.004882&amp;ie=UTF8&amp;z=16&amp;iwloc=addr">The Embarcadaro</a> and Harrison in San Francisco, CA.</li>
<li> The primary tool I use at work is <a href="http://www.codegear.com/products/delphi/win32">Delphi</a>, which was just purchased by <a href="http://www.embarcadero.com/">Embarcadero Technologies</a>.</li>
</ul>
<p>Seems to be a theme here. . . .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davinciunltd.com/2008/07/embarcadero-keeps-coming-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Updated Delphi Road Map</title>
		<link>http://www.davinciunltd.com/2008/04/updated-delphi-road-map/</link>
		<comments>http://www.davinciunltd.com/2008/04/updated-delphi-road-map/#comments</comments>
		<pubDate>Thu, 24 Apr 2008 01:05:05 +0000</pubDate>
		<dc:creator>Jim McKeeth</dc:creator>
				<category><![CDATA[CodeGear]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[Anonymous Methods]]></category>
		<category><![CDATA[Generics]]></category>
		<category><![CDATA[Tiburon]]></category>
		<category><![CDATA[Unicode]]></category>

		<guid isPermaLink="false">http://www.davinciunltd.com/?p=66</guid>
		<description><![CDATA[Nick just posted an updated Delphi Road Map.  Check it out.  This looks to be one of the most significant Delphi releases in a long time.  This road map is just covers native code, not .NET &#8211; that will be in a future road map I guess.  Anonymous Methods, Generics and Unicode stand to be [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogs.codegear.com/nickhodges/2008/04/23/39051">Nick</a> just posted an updated <a href="http://dn.codegear.com/article/36620">Delphi Road Map</a>.  Check it out.  This looks to be one of the most significant Delphi releases in a long time.  This road map is just covers native code, not .NET &#8211; that will be in a future road map I guess.  <span id="ArticleLabel">Anonymous Methods, </span>Generics and Unicode stand to be huge langauge and framework improvements.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davinciunltd.com/2008/04/updated-delphi-road-map/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Scripting Engine Unit Template</title>
		<link>http://www.davinciunltd.com/2008/04/scripting-engine-unit-template/</link>
		<comments>http://www.davinciunltd.com/2008/04/scripting-engine-unit-template/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 07:41:07 +0000</pubDate>
		<dc:creator>Jim McKeeth</dc:creator>
				<category><![CDATA[CodeGear]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[live templates]]></category>
		<category><![CDATA[scripting]]></category>

		<guid isPermaLink="false">http://www.davinciunltd.com/?p=64</guid>
		<description><![CDATA[I must say, Delphi Live Templates and the Scripting Engines are REALLY amazing.  I wanted to make a new scripting engine, but then I got to thinking that my scripting engines had a lot of similar code, so I figured I would make a Live Template to create Scripting Engines.  I based it on Nick&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>I must say, Delphi Live Templates and the Scripting Engines are REALLY amazing.  I wanted to make a new scripting engine, but then I got to thinking that my scripting engines had a lot of similar code, so I figured I would make a Live Template to create Scripting Engines.  I based it on Nick&#8217;s BaseScriptingEngine from his article on <a href="http://dn.codegear.com/article/37468">Creating a Live Templates Scripting Engine</a>.</p>
<p>I then created a <a href="http://blogs.codegear.com/pawelglowacki/2007/10/29/38498">Template Project</a> for the Scripting Engine Package.  So I can pop out a scripting engine now faster then you can say &#8220;Delphi Rocks&#8221;.</p>
<p>I thought I would share my Scripting Engine Unit Template.  You will probably want to make your own Scripting Engine Package Template Project, but if there is enough interest I will share mine out.  You will most likely want to modify this template to suite your own framework.</p>
<p>[<a href="http://www.davinciunltd.com/download/ScriptingEngineUnit.zip">Scripting Engine Unit Template</a>]</p>
<p><em><strong>Note</strong></em>: This references my general scripting engine to create a new GUID.  You will need to do that manually until I dress up my general scripting engine for public consumption.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davinciunltd.com/2008/04/scripting-engine-unit-template/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Delphi Random Class Namer</title>
		<link>http://www.davinciunltd.com/2008/04/delphi-randomclass-namer/</link>
		<comments>http://www.davinciunltd.com/2008/04/delphi-randomclass-namer/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 06:38:44 +0000</pubDate>
		<dc:creator>Jim McKeeth</dc:creator>
				<category><![CDATA[CodeGear]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[funny]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[live templates]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[templates]]></category>

		<guid isPermaLink="false">http://www.davinciunltd.com/?p=63</guid>
		<description><![CDATA[Ever wonder what class to write next in Delphi?  Well, combine Delphi Live Templates (including a custom scripting engine) with www.ClassNamer.com and you never have to wonder again.

Although how to implement that class is another question.
If there is any interest in the code let me know and I will polish it up and post it.  [...]]]></description>
			<content:encoded><![CDATA[<p>Ever wonder what class to write next in Delphi?  Well, combine Delphi Live Templates (including a custom scripting engine) with <a href="http://www.ClassNamer.com/">www.ClassNamer.com</a> and you never have to wonder again.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="582" height="553" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="play" value="true" /><param name="loop" value="true" /><param name="wmode" value="transparent" /><param name="quality" value="low" /><param name="src" value="http://www.davinciunltd.com/wp-content/uploads/2008/04/HttpRandomClassNamer.swf" /><embed type="application/x-shockwave-flash" width="582" height="553" src="http://www.davinciunltd.com/wp-content/uploads/2008/04/HttpRandomClassNamer.swf" quality="low" wmode="transparent" loop="true" play="true"></embed></object></p>
<p>Although how to implement that class is another question.</p>
<p>If there is any interest in the code let me know and I will polish it up and post it.  I created a random HTTP parser script engine and then the live template does the rest.  I figured this would be a fun way to get familiar with Live Templates and the custom scripting engine.  This is a really powerful feature of Delphi.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davinciunltd.com/2008/04/delphi-randomclass-namer/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>IE vs. Standards</title>
		<link>http://www.davinciunltd.com/2008/03/ie-vs-standards/</link>
		<comments>http://www.davinciunltd.com/2008/03/ie-vs-standards/#comments</comments>
		<pubDate>Sat, 29 Mar 2008 17:45:34 +0000</pubDate>
		<dc:creator>Jim McKeeth</dc:creator>
				<category><![CDATA[CodeGear]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[Idealist]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Joel]]></category>
		<category><![CDATA[Pragmatist]]></category>
		<category><![CDATA[standards]]></category>

		<guid isPermaLink="false">http://www.davinciunltd.com/2008/03/ie-vs-standards/</guid>
		<description><![CDATA[Joel once again has an interesting article about Marian Headphones.  To sum up, IE8 defaults to standards compliant which breaks most of the existing web sites that worked around earlier version&#8217;s of IE&#8217;s poor standards compliance.  Idealists believe that is great!  Pragmatists believe that breaking most of the web is a bad [...]]]></description>
			<content:encoded><![CDATA[<p>Joel once again has an <a href="http://www.joelonsoftware.com/items/2008/03/17.html">interesting article about Marian Headphones</a>.  To sum up, IE8 defaults to standards compliant which breaks most of the existing web sites that worked around earlier version&#8217;s of IE&#8217;s poor standards compliance.  Idealists believe that is great!  Pragmatists believe that breaking most of the web is a bad idea.</p>
<p>Here is Joel&#8217;s prediction:</p>
<blockquote><p> The IE8 team going to tell everyone that IE8 will use web standards by default, and run a nice long beta during which they beg people to test their pages with IE8 and get them to work. And when they get closer to shipping, and only 32% of the web pages in the world render properly, they’ll say, “look guys, we’re really sorry, we really wanted IE8 standards mode to be the default, but we can’t ship a browser that doesn’t work,” and they’ll revert to the pragmatic decision. Or maybe they won’t, because the pragmatists at Microsoft have been out of power for a long time. In which case, IE is going to lose a lot of market share, which would please the idealists to no end, and probably won’t decrease Dean Hachamovitch’s big year-end bonus by one cent.</p></blockquote>
<p>What camp are you in?  Pragmatist or Idealist?</p>
<p>I don&#8217;t think it is completely cut and dry.  I am a practical idealist personally &#8211; when possible we should do what we can to move toward the ideal standards, but continue to make existing stuff work as much as possible.  Maybe with a warning that something is non-standards compliant.  I am a big fan of flagging things deprecated when developing libraries.  Leave the old methods in place, but let the users know that they will be going away.  If possible provide tools and tips to aid in migration.</p>
<p>The point Joel makes that a lot of pages can&#8217;t be updated for various reasons is a valid one.  Same is true of deprecating and eventually removing methods in a development library.  Developers may skip a few updates, or might not have access to all the source code to make the changes required.  This is especially a big deal for run time libraries that existing compiled code depends on.</p>
<p>Delphi has typically been really good about marking things as Deprecated and giving users plenty of warning that things might change.  Indy on the other hand is pretty bad about breaking things between releases, and not providing a very clear path to making your code work with the new version.  Microsoft is usually really good at supporting their users (Office) but not so hot with their developers and leaving code written in earlier IDE&#8217;s unable to compile in the new version.</p>
<p>I agree that is good for IE to continue to become more standards compliant, and they are in a mess of their own making, but I do believe that Joel&#8217;s point is that a lot of the standards were incomplete or didn&#8217;t cover things that were needed.  Like the now deprecated &lt;blink&gt; tag was not in the standard, and it was only the fact that Netscape supported it as a result of user demand that caused it to be added.  Netscape, Mozilla and Opera still support it, although Internet Explorer has dropped support for it.</p>
<p>I don&#8217;t think it is in IE&#8217;s best interest to release a browser that appears to all those browser detection scripts as IE and causes the page to render funky for IE when it is no longer necessary.  This results in messed up pages.  Maybe they need to change the IE user agent based on what mode IE is running in so that if it is running in standards mode then pages don&#8217;t assume it is non-standard. . . .   Opera does that, which is pretty effective.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davinciunltd.com/2008/03/ie-vs-standards/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>BITS TLB and Headers</title>
		<link>http://www.davinciunltd.com/2008/03/bits-tlb-and-headers/</link>
		<comments>http://www.davinciunltd.com/2008/03/bits-tlb-and-headers/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 07:43:42 +0000</pubDate>
		<dc:creator>Jim McKeeth</dc:creator>
				<category><![CDATA[CodeGear]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[]]></category>
		<category><![CDATA[BITS]]></category>
		<category><![CDATA[Delphi programming]]></category>
		<category><![CDATA[Downloads]]></category>
		<category><![CDATA[SDK]]></category>
		<category><![CDATA[Service]]></category>

		<guid isPermaLink="false">http://www.davinciunltd.com/2008/03/bits-tlb-and-headers/</guid>
		<description><![CDATA[If you want to program with Microsoft&#8217;s Background Intelligent Transfer Service (BITS) then you will need the TLB or header files. These can be generated from the IDL files that come with the Windows XP SP2 Platform SDK, or any of the subsequent platform SDKs, the latest being Windows SDK for Windows Server 2008 and [...]]]></description>
			<content:encoded><![CDATA[<p>If you want to program with Microsoft&#8217;s Background Intelligent Transfer Service (BITS) then you will need the TLB or header files. These can be generated from the IDL files that come with the Windows XP SP2 Platform SDK, or any of the subsequent platform SDKs, the latest being Windows SDK for Windows Server 2008 and .NET Framework 3.5. You will need MIDL to generate the needed files. It is rather a pain to download that whole SDK and then generate the useful files.To make your life easier I have generated the useful files, and also ran them through Delphi RAD Studio 2007 for Win32 to create Object Pascal wrappers for your Delphi programming pleasure. Then I wrapped it all up in a zip for easy downloading. Much quicker to download.</p>
<p>As a note, you do not need to deploy any of these files, or the files in the SDK with your application. You just need to ensure that the Background Transfer Service is running on the target machine.</p>
<p>For more information, I have created a hub page on <a href="http://www.davinciunltd.com/code/advanced-downloads-with-delphi/">Advanced Downloads with Delphi</a> that I will update with more information as I gather it.</p>
<p>Enjoy!</p>
<p>[<a href="http://www.davinciunltd.com/download/bits-tbl,c,header,pas(3.0).zip">Download C, TBL, H, PAS archive</a>]</p>
<p><font size="1">Technorati Tags: </font><a href="http://technorati.com/tags/BITS" rel="tag"><font size="1">BITS</font></a><font size="1">, </font><a href="http://technorati.com/tags/Downloads" rel="tag"><font size="1">Downloads</font></a><font size="1">, </font><a href="http://technorati.com/tags/Service" rel="tag"><font size="1">Service</font></a><font size="1">, </font><a href="http://technorati.com/tags/SDK" rel="tag"><font size="1">SDK</font></a><font size="1">, </font><a href="http://technorati.com/tags/Library" rel="tag"><font size="1">Library</font></a><font size="1">, </font><a href="http://technorati.com/tags/Delphi%20programming" rel="tag"><font size="1">Delphi programming</font></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.davinciunltd.com/2008/03/bits-tlb-and-headers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Marcus Oblak and D-Robots</title>
		<link>http://www.davinciunltd.com/2008/02/marcus-oblak-and-d-robots/</link>
		<comments>http://www.davinciunltd.com/2008/02/marcus-oblak-and-d-robots/#comments</comments>
		<pubDate>Mon, 25 Feb 2008 15:25:22 +0000</pubDate>
		<dc:creator>Jim McKeeth</dc:creator>
				<category><![CDATA[CodeRage]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Competition]]></category>
		<category><![CDATA[Robots]]></category>

		<guid isPermaLink="false">http://www.davinciunltd.com/2008/02/marcus-oblak-and-d-robots/</guid>
		<description><![CDATA[Back in November I hosted the Delphi Robot Rage competition as part of CodeRage.  At the time I was unable to contact the author of D-Robots (the program we used).  I am not sure if that was a result of outdated contact information or just poor luck (i.e. spam blockers).  Well, I [...]]]></description>
			<content:encoded><![CDATA[<p>Back in November I hosted the <a href="http://www.davinciunltd.com/code/delphi-robot-rage/">Delphi Robot Rage</a> competition as part of <a href="http://conferences.codegear.com/coderage07">CodeRage</a>.  At the time I was unable to contact the author of D-Robots (the program we used).  I am not sure if that was a result of outdated contact information or just poor luck (i.e. spam blockers).  Well, I received an email from Marcus Oblak AKA &#8220;mrqzzz mrqzzz&#8221; and the author of D-Robots.  Turns out I misspelled his name, for which I apologize.  Hopefully we can work something out to get a slight update to D-Robots and use it for another Delphi Robot Rage.  I&#8217;ll keep you posted.  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.davinciunltd.com/2008/02/marcus-oblak-and-d-robots/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

