<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:gd="http://schemas.google.com/g/2005" xmlns:georss="http://www.georss.org/georss" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-4599739291943059092</atom:id><lastBuildDate>Mon, 29 Dec 2025 02:40:33 +0000</lastBuildDate><category>CodeSnip</category><category>Code Snippets</category><category>Delphi</category><category>Pascal</category><category>Pascal Snippets</category><category>Source Code</category><category>Code Bank</category><category>Delphi Code Bank</category><category>Pascal Code Bank</category><category>Source Code Bank</category><category>Source Code Repository</category><category>Delphi 11 Alexandria</category><category>Delphi 11 Update 1</category><title>CodeSnip</title><description>Blog for CodeSnip: a code bank designed with Pascal in mind</description><link>https://codesnip-app.blogspot.com/</link><managingEditor>noreply@blogger.com (Delphidabbler)</managingEditor><generator>Blogger</generator><openSearch:totalResults>71</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-5468255004423902949</guid><pubDate>Fri, 12 Sep 2025 14:53:00 +0000</pubDate><atom:updated>2025-09-12T15:53:42.281+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Code Snippets</category><category domain="http://www.blogger.com/atom/ns#">CodeSnip</category><category domain="http://www.blogger.com/atom/ns#">Delphi</category><category domain="http://www.blogger.com/atom/ns#">Pascal</category><category domain="http://www.blogger.com/atom/ns#">Pascal Snippets</category><category domain="http://www.blogger.com/atom/ns#">Source Code</category><title>CodeSnip v4.27.0 released with support for Delphi 13</title><description>&lt;p&gt;&lt;span style="font-size: medium;"&gt;&lt;b&gt;➣&amp;nbsp;&lt;a href="https://delphidabbler.blogspot.com/2025/09/codesnip-4270-released-with-delphi-13.html"&gt;For info see this post on the DelphiDabbler blog&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;.&lt;/p&gt;</description><link>https://codesnip-app.blogspot.com/2025/09/codesnip-v4270-released-with-support.html</link><author>noreply@blogger.com (Delphidabbler)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-7048818431163396185</guid><pubDate>Fri, 02 May 2025 19:55:00 +0000</pubDate><atom:updated>2025-05-02T20:55:40.655+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Code Snippets</category><category domain="http://www.blogger.com/atom/ns#">CodeSnip</category><category domain="http://www.blogger.com/atom/ns#">Delphi</category><category domain="http://www.blogger.com/atom/ns#">Pascal</category><category domain="http://www.blogger.com/atom/ns#">Pascal Snippets</category><category domain="http://www.blogger.com/atom/ns#">Source Code</category><title>CodeSnip v4.26.0 released</title><description>&lt;p&gt;&lt;span style="font-size: medium;"&gt;&lt;b&gt;➣&amp;nbsp;&lt;a href="https://delphidabbler.blogspot.com/2025/05/codesnip-v4260-released.html"&gt;For info see this post on the DelphiDabbler blog&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;.&lt;/p&gt;</description><link>https://codesnip-app.blogspot.com/2025/05/codesnip-v4260-released.html</link><author>noreply@blogger.com (Delphidabbler)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-8364556438881628895</guid><pubDate>Sun, 20 Apr 2025 07:07:00 +0000</pubDate><atom:updated>2025-04-20T08:07:39.119+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code Snippets</category><category domain="http://www.blogger.com/atom/ns#">CodeSnip</category><category domain="http://www.blogger.com/atom/ns#">Delphi</category><category domain="http://www.blogger.com/atom/ns#">Pascal</category><title>Freezing this blog</title><description>&lt;p&gt;It's becoming a bit of a pain maintaining this blog just for &lt;a href="https://delphidabbler.com/software/codesnip" target="_blank"&gt;CodeSnip&lt;/a&gt; and the &lt;a href="https://github.com/delphidabbler/code-snippets" target="_blank"&gt;Code Snippets Collection&lt;/a&gt; while also running the more general DelphiDabbler blog.&lt;/p&gt;&lt;p&gt;Given this blog has a much smaller readership than the &lt;a href="https://delphidabbler.blogspot.com" target="_blank"&gt;DelphiDabbler blog&lt;/a&gt; I've been cross posting CodeSnip news on that blog for quite some time now.&lt;/p&gt;&lt;p&gt;So, in future, I'm going to post CodeSnip related news to the other blog and will cease using this one. For a time I will probably do a stub post here linking to any relevant new posts on the main blog. Eventually I'll freeze this blog completely.&lt;/p&gt;&lt;p&gt;This blog will remain up, partly because CodeSnip has a help menu item that links to it. That may change in future CodeSnip releases.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMtz-Vo0YwBoT2PJtYFWj-uDg9eaxDsw0FhqAPKyIIcHBe3bXi1mwDyhtI6ml3rT95-7Pj_o0fjCa0cLiqA7-McQeEKBZ-YIBgL2MwN9KTUk7QGNV0baVdWuSj3rMJ1mTx9DelyAOcrL_LSH7Evhfl4c_PG-9QQjl_hzSL6lOU8RSCSnDkGUgAjh3g2g/s1592/ddab-blog.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="952" data-original-width="1592" height="239" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMtz-Vo0YwBoT2PJtYFWj-uDg9eaxDsw0FhqAPKyIIcHBe3bXi1mwDyhtI6ml3rT95-7Pj_o0fjCa0cLiqA7-McQeEKBZ-YIBgL2MwN9KTUk7QGNV0baVdWuSj3rMJ1mTx9DelyAOcrL_LSH7Evhfl4c_PG-9QQjl_hzSL6lOU8RSCSnDkGUgAjh3g2g/w400-h239/ddab-blog.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style="text-align: left;"&gt;Should anyone have just cause or impediment as to why I really shouldn't do this, please tell me in the comments.&lt;/p&gt;&lt;p style="text-align: left;"&gt;&lt;br /&gt;&lt;/p&gt;</description><link>https://codesnip-app.blogspot.com/2025/04/freezing-this-blog.html</link><author>noreply@blogger.com (Delphidabbler)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMtz-Vo0YwBoT2PJtYFWj-uDg9eaxDsw0FhqAPKyIIcHBe3bXi1mwDyhtI6ml3rT95-7Pj_o0fjCa0cLiqA7-McQeEKBZ-YIBgL2MwN9KTUk7QGNV0baVdWuSj3rMJ1mTx9DelyAOcrL_LSH7Evhfl4c_PG-9QQjl_hzSL6lOU8RSCSnDkGUgAjh3g2g/s72-w400-h239-c/ddab-blog.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-8469155412597269352</guid><pubDate>Sat, 19 Apr 2025 10:51:00 +0000</pubDate><atom:updated>2025-04-19T11:51:56.384+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Code Snippets</category><category domain="http://www.blogger.com/atom/ns#">CodeSnip</category><category domain="http://www.blogger.com/atom/ns#">Delphi</category><category domain="http://www.blogger.com/atom/ns#">Pascal</category><category domain="http://www.blogger.com/atom/ns#">Pascal Snippets</category><category domain="http://www.blogger.com/atom/ns#">Source Code</category><title>CodeSnip v4.25.0 released (including a fix for a fix of a fix)</title><description>&lt;p&gt;It's nice to be able to release a version of &lt;a href="https://delphidabbler.com/software/codesnip" target="_blank"&gt;CodeSnip&lt;/a&gt; containing new features instead of bug fixes. Except that this release also includes bug fixes, including episode 3 of the hibernation bug fix saga.&lt;/p&gt;&lt;p&gt;So what's new? Not a lot except for some new snippet export options:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;For the longest time you've been able to get a copy on the clipboard all the information about a snippet that gets displayed in the detail pane. Now you can finally save the information directly to a file. The only option is Rich Text Format just now, but more formats may make an appearance later.&lt;/li&gt;&lt;li&gt;When exporting Pascal units and annotated snippet source code various formats can be chosen. HTML 5 format export files has now joined the list or plain text, Pascal, RTF and XHTML&lt;/li&gt;&lt;/ol&gt;Some annoying, but relatively trivial bugs have also been fixed. Go see the change log if you're curious.&lt;p&gt;&lt;/p&gt;&lt;p&gt;But I can't close this post without mentioning the hibernation bug fix saga.&lt;/p&gt;&lt;p&gt;A third fix of the bug where CodeSnip sometimes crashes after hibernation has been rolled into this release. Now this doesn't mean that the previous fixes didn't work - they did. But, as I mentioned in my posts about releases &lt;a href="https://codesnip-app.blogspot.com/2025/04/persistent-bug-in-codesnip-squashed-at.html" target="_blank"&gt;v4.24.1&lt;/a&gt;&amp;nbsp;and &lt;a href="https://codesnip-app.blogspot.com/2025/04/persistent-bug-in-codesnip-re-squashed.html" target="_blank"&gt;v4.24.2&lt;/a&gt;, those fixes relied on dirty hacks of which I was ashamed.&lt;/p&gt;&lt;p&gt;So, along comes Oliver (&lt;a href="https://github.com/SirRufo" target="_blank"&gt;@SirRufo&lt;/a&gt; on GitHub) with a patch that fixes the bug without all the hacks. I've gratefully included this patch in this release. No more shame for me! Thanks Oliver.&lt;/p&gt;&lt;p&gt;⮞&amp;nbsp;&lt;a href="https://github.com/delphidabbler/codesnip/releases/tag/version-4.25.0" target="_blank"&gt;&lt;b&gt;Get release v4.25.0 from GitHub&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Here's CodeSnip displaying the new &lt;i&gt;Save Snippet Information&lt;/i&gt;&amp;nbsp;dialogue box:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN8cyNrnYo47SkoSb0wpKpyr4osRxKOwoRaXnohTFO5e9qQG7Z7yk2zHBCMhiXwosUbBo-jhkq-5x01bbCMwaMSG3l_DSiPB0VvCu2iBBXyvbz6LXLDH9bMdXV8c7cLF87ubxqGtfKO8DEfcad7nb52-P7PAo2YLVJYGgqmKo05RcdUXt5dciC26007AM/s1598/codesnip-4-25-0-rtf.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1158" data-original-width="1598" height="464" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN8cyNrnYo47SkoSb0wpKpyr4osRxKOwoRaXnohTFO5e9qQG7Z7yk2zHBCMhiXwosUbBo-jhkq-5x01bbCMwaMSG3l_DSiPB0VvCu2iBBXyvbz6LXLDH9bMdXV8c7cLF87ubxqGtfKO8DEfcad7nb52-P7PAo2YLVJYGgqmKo05RcdUXt5dciC26007AM/w640-h464/codesnip-4-25-0-rtf.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style="text-align: left;"&gt;And here it is again, showing the new HTML 5 option when saving annotated source code, and showing a preview of a weirdly named, but valid, function that I use to test the rendering of Unicode identifiers:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9ZHMr44RDQY4-BVAg-Xi2-sBNtIp4AzPQMzq1-Taf00p8Wewa9f4lUFf41Svievhik6ZAOr1qB_y-_20zb-4uUw5r6m0TVbwWHdRTc6kuU8WyVqJtpqRpkMEDjY3ekwETe8N_gA2PONZ85dGjRFnKcSODx15RisRZtGATiOu8-rLTw68mI8t2cciba2c/s1739/codesnip-4-25-0-html5.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1182" data-original-width="1739" height="436" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9ZHMr44RDQY4-BVAg-Xi2-sBNtIp4AzPQMzq1-Taf00p8Wewa9f4lUFf41Svievhik6ZAOr1qB_y-_20zb-4uUw5r6m0TVbwWHdRTc6kuU8WyVqJtpqRpkMEDjY3ekwETe8N_gA2PONZ85dGjRFnKcSODx15RisRZtGATiOu8-rLTw68mI8t2cciba2c/w640-h436/codesnip-4-25-0-html5.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style="text-align: center;"&gt;&lt;br /&gt;&lt;/p&gt;</description><link>https://codesnip-app.blogspot.com/2025/04/codesnip-v4250-released-including-fix.html</link><author>noreply@blogger.com (Delphidabbler)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN8cyNrnYo47SkoSb0wpKpyr4osRxKOwoRaXnohTFO5e9qQG7Z7yk2zHBCMhiXwosUbBo-jhkq-5x01bbCMwaMSG3l_DSiPB0VvCu2iBBXyvbz6LXLDH9bMdXV8c7cLF87ubxqGtfKO8DEfcad7nb52-P7PAo2YLVJYGgqmKo05RcdUXt5dciC26007AM/s72-w640-h464-c/codesnip-4-25-0-rtf.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-8060914810760043619</guid><pubDate>Mon, 14 Apr 2025 20:04:00 +0000</pubDate><atom:updated>2025-04-14T21:04:31.579+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Code Snippets</category><category domain="http://www.blogger.com/atom/ns#">CodeSnip</category><category domain="http://www.blogger.com/atom/ns#">Delphi</category><category domain="http://www.blogger.com/atom/ns#">Pascal</category><category domain="http://www.blogger.com/atom/ns#">Pascal Snippets</category><category domain="http://www.blogger.com/atom/ns#">Source Code</category><title>Persistent bug in CodeSnip re-squashed, properly this time?</title><description>&lt;p&gt;It had to happen didn't it? Not long after my &lt;a href="https://codesnip-app.blogspot.com/2025/04/persistent-bug-in-codesnip-squashed-at.html" target="_blank"&gt;post about yesterday's bug fix&lt;/a&gt; release of CodeSnip, &lt;i&gt;Oliver&lt;/i&gt; reached out to point out a potential problem with the way I'd implemented it. See the linked post and comments if you're interested in the details.&lt;/p&gt;&lt;p&gt;Suffice to say that the problem was sufficient for me to hunt for an alternative solution. Having found one I've rushed out hotfix v4.24.2 to patch yesterday's release (v4.24.1) and make it more robust.&lt;/p&gt;&lt;p&gt;&lt;i&gt;Whether or not you downloaded yesterday's you really should update CodeSnip to the hotfix release.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;⮞&amp;nbsp;&lt;a href="https://github.com/delphidabbler/codesnip/releases/tag/version-4.24.2" target="_blank"&gt;Get hotfix release v4.24.2 from GitHub&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;The fix involves a dirty hack of which I'm deeply ashamed, but it works. To be up-front about how horrible this hack is I've liberally sprinkled comments that include the text "!! HACK" in the code. Also, any new methods and fields that implement the hack have names prefixed with&amp;nbsp;&lt;span style="font-family: courier;"&gt;_HACK_&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;&lt;i&gt;I need to get this patch out, so don't have time to explain the solution here. See yesterday's post for a statement of the problem and an overview of the fix in v4.24.1. If you're interested in today's fix the following two diffs should help:&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;&lt;a href="https://github.com/delphidabbler/codesnip/compare/version-4.24.0...version-4.24.2" target="_blank"&gt;Diff between v4.24.0 and v4.24.2&lt;/a&gt; - shows the fix relative to the last release containing the bug, without any of the reverted changes from v4.24.1 cluttering things up. Ignore all the documentation, version and help file changes.&lt;/li&gt;&lt;li&gt;&lt;a href="https://github.com/delphidabbler/codesnip/compare/version-4.24.0...version-4.24.2" target="_blank"&gt;Diff between yesterdays fix, v4.24.1 and today's fix, v4.21.2&lt;/a&gt; - shows what changed between the two fixes. Ignore the documentation and version file changes.&lt;/li&gt;&lt;/ol&gt;&lt;i&gt;Should you want an explanation of the changes, please leave a comment and I'll do my best to describe the problem and solution.&lt;/i&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiN_Svb2yCILuDegDA1ZkJ9GCiV2pN6W1wx0ui5KEX9Mh6Q9yctK9fhgOcaJs0YQQWgR64RmrHelEWUFpgVF8-T_OWbNYudlpHvRTmnJQ8TTkPpxNzALln3yxe3EVvq7dDqfktV2aquGNaoL4fPcJVcDVewykIv_1hzlAEgAmNVgnk4LBW1VCcPSp5uc2M/s1509/codesnip-4-24-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1208" data-original-width="1509" height="512" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiN_Svb2yCILuDegDA1ZkJ9GCiV2pN6W1wx0ui5KEX9Mh6Q9yctK9fhgOcaJs0YQQWgR64RmrHelEWUFpgVF8-T_OWbNYudlpHvRTmnJQ8TTkPpxNzALln3yxe3EVvq7dDqfktV2aquGNaoL4fPcJVcDVewykIv_1hzlAEgAmNVgnk4LBW1VCcPSp5uc2M/w640-h512/codesnip-4-24-2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description><link>https://codesnip-app.blogspot.com/2025/04/persistent-bug-in-codesnip-re-squashed.html</link><author>noreply@blogger.com (Delphidabbler)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiN_Svb2yCILuDegDA1ZkJ9GCiV2pN6W1wx0ui5KEX9Mh6Q9yctK9fhgOcaJs0YQQWgR64RmrHelEWUFpgVF8-T_OWbNYudlpHvRTmnJQ8TTkPpxNzALln3yxe3EVvq7dDqfktV2aquGNaoL4fPcJVcDVewykIv_1hzlAEgAmNVgnk4LBW1VCcPSp5uc2M/s72-w640-h512-c/codesnip-4-24-2.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-3121623809607225268</guid><pubDate>Sun, 13 Apr 2025 19:16:00 +0000</pubDate><atom:updated>2025-04-13T20:20:51.796+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Code Snippets</category><category domain="http://www.blogger.com/atom/ns#">CodeSnip</category><category domain="http://www.blogger.com/atom/ns#">Delphi</category><category domain="http://www.blogger.com/atom/ns#">Pascal</category><category domain="http://www.blogger.com/atom/ns#">Pascal Snippets</category><category domain="http://www.blogger.com/atom/ns#">Source Code</category><title>Persistent bug in CodeSnip squashed at long last [I hope]</title><description>&lt;p&gt;What a red letter day. &#127878;&#127879;&#127776;&lt;/p&gt;&lt;p&gt;For several years a nasty access violation bug has been lurking inside &lt;a href="https://delphidabbler.com/software/codesnip" target="_blank"&gt;CodeSnip&lt;/a&gt;. It crashed the program when the computer was resumed from hibernation, but only sometimes. Because the bug was intermittent and required numerous hibernation / resume cycles to be run before it finally cropped up it defied diagnosis for a long, long time.&lt;/p&gt;&lt;p&gt;Until now. Or up until someone finds my fix doesn't work for them!&lt;/p&gt;&lt;p&gt;The bug fix release is v4.24.1 - &lt;b&gt;&lt;a href="https://github.com/delphidabbler/codesnip/releases/tag/version-4.24.1" target="_blank"&gt;get it from GitHub&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;&lt;i&gt;Read on if you're interested what the problem turned out to be&lt;/i&gt;.&lt;/p&gt;&lt;p&gt;CodeSnip uses a custom drawn tree view control to display the available snippets, grouped under headings. A custom &lt;i&gt;TTreeNode&lt;/i&gt; class is used that has an extra property that references an object instance that provides extra information about the item been displayed. This information is used by the custom drawing code.&lt;/p&gt;&lt;p&gt;The problem is that, occasionally, when waking from hibernation, Windows destroys and recreates the window handle of the tree view. The Delphi VCL detects this and stores the &lt;i&gt;TTreeNode&lt;/i&gt; properties in a memory stream when the tree view window is destroyed and then re-reads the node properties when the window is recreated. This means that the standard&amp;nbsp;&lt;i&gt;TTreeNode&lt;/i&gt; properties are persisted, but &lt;i&gt;not&lt;/i&gt; the additional property I added to the the custom &lt;i&gt;TTreeNode&lt;/i&gt; class. Consequently where CodeSnip expects to find the object reference it left there it actually finds &lt;i&gt;nil&lt;/i&gt;. And the first time the object is read is when things go all pear shaped. Hello access violation!&lt;/p&gt;&lt;p&gt;The window creation and destruction code is not easily available get into. I didn't (and won't) hack &lt;i&gt;TTreeView&lt;/i&gt; in the VCL code. However I did try to hack &lt;i&gt;TTreeView&lt;/i&gt; by other means. I don't like such hacks and, worse, my hack didn't work reliably!&lt;/p&gt;&lt;p&gt;So, in the end I intercepted the &lt;i&gt;WM_POWERBROADCAST&lt;/i&gt; message that Windows sends when there's a change of power state. The message gets sent numerous times: it has a parameter that says what exactly is happening. When hibernation is detected the tree view state is saved. When resume is detected we let Windows do its worst and then jump in and rebuild the tree view properly and finally restore its state. Actually, the message that I needed gets sent twice, once before and once after the tree view gets recreated, so the rebuilding also gets done twice. There's no great overhead of doing this, so that's not worth working around.&amp;nbsp;&lt;/p&gt;&lt;p&gt;This is still a bit of a kludge, and I'm not 100% sure it will work on all versions of Windows: the&amp;nbsp;&lt;i&gt;WM_POWERBROADCAST&amp;nbsp;&lt;/i&gt;docs aren't clear.&lt;/p&gt;&lt;p&gt;A better solution would be to re-implement all the tree view handling code to avoid using a custom &lt;i&gt;TTreeNode &lt;/i&gt;descendant, but the code is deeply entwined and it's a big job. Maybe one day.&lt;/p&gt;&lt;p&gt;Anyhow, please do try this update. I'm sure you'll&amp;nbsp;&lt;a href="https://github.com/delphidabbler/codesnip/issues" target="_blank"&gt;report&lt;/a&gt;&amp;nbsp;it if the fix doesn't work for you!&lt;/p&gt;&lt;p&gt;View diff of the fix &lt;a href="https://github.com/delphidabbler/codesnip/commit/58be37c7a9a31be5abab1ec2ae323552259f44d9" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgomS7QPXBJamDl3KZ6KLMX6SAnbmzO8OjLS1ZUpZ_VzKAfU3x_YhfiQAG78va0-IAOnIJCdEy0hu4kQico8QHxJKn6U3PjcLHj-FKEFEETBe5JnktXFsg4qZIXSyQLfTsHai-XY8JBhRkMGxDINUnOSl_O4iV9CeFHPszHvT8y82ku-gtah6tc3XDUSqs/s985/codesnip-4-24-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="891" data-original-width="985" height="579" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgomS7QPXBJamDl3KZ6KLMX6SAnbmzO8OjLS1ZUpZ_VzKAfU3x_YhfiQAG78va0-IAOnIJCdEy0hu4kQico8QHxJKn6U3PjcLHj-FKEFEETBe5JnktXFsg4qZIXSyQLfTsHai-XY8JBhRkMGxDINUnOSl_O4iV9CeFHPszHvT8y82ku-gtah6tc3XDUSqs/w640-h579/codesnip-4-24-1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;</description><link>https://codesnip-app.blogspot.com/2025/04/persistent-bug-in-codesnip-squashed-at.html</link><author>noreply@blogger.com (Delphidabbler)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgomS7QPXBJamDl3KZ6KLMX6SAnbmzO8OjLS1ZUpZ_VzKAfU3x_YhfiQAG78va0-IAOnIJCdEy0hu4kQico8QHxJKn6U3PjcLHj-FKEFEETBe5JnktXFsg4qZIXSyQLfTsHai-XY8JBhRkMGxDINUnOSl_O4iV9CeFHPszHvT8y82ku-gtah6tc3XDUSqs/s72-w640-h579-c/codesnip-4-24-1.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-1846238385978335523</guid><pubDate>Thu, 03 Apr 2025 19:05:00 +0000</pubDate><atom:updated>2025-04-03T20:05:40.852+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code Snippets</category><category domain="http://www.blogger.com/atom/ns#">CodeSnip</category><category domain="http://www.blogger.com/atom/ns#">Delphi</category><category domain="http://www.blogger.com/atom/ns#">Pascal</category><category domain="http://www.blogger.com/atom/ns#">Pascal Snippets</category><category domain="http://www.blogger.com/atom/ns#">Source Code</category><title>Code Snippets Collection v2.2.3 released</title><description>&lt;p&gt;Version 2.2.3 of my Pascal&amp;nbsp;&lt;a href="https://github.com/delphidabbler/code-snippets" target="_blank"&gt;code snippets collection&lt;/a&gt;&amp;nbsp;has just been released.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Unlike the previous bumper release, this one adds compilation results with Delphi 12 for all snippets that hadn't been tested with that compiler, which was most of them.&lt;/p&gt;&lt;p&gt;It also fixes a couple of bugs, so I recommend updating to this release.&lt;/p&gt;&lt;p&gt;For details of the bug fixes, see the&amp;nbsp;&lt;a href="https://github.com/delphidabbler/code-snippets/blob/v2.2.3/CHANGELOG.md" target="_blank"&gt;change log&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;If you are using&amp;nbsp;&lt;a href="https://delphidabbler.com/software/codesnip" target="_blank"&gt;CodeSnip&lt;/a&gt;&amp;nbsp;v4.16 or later then you can update your snippets collection by using the&amp;nbsp;&lt;i&gt;Database | Install or Update DelphiDabbler Snippets Database&lt;/i&gt;&amp;nbsp;menu option and following the instructions in the resulting wizard.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="-webkit-text-stroke-width: 0px; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;b&gt;➤ You can find the new release on&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://github.com/delphidabbler/code-snippets/releases/tag/v2.2.3" target="_blank"&gt;GitHub&lt;/a&gt;.&lt;/b&gt;&lt;/p&gt;&lt;p style="-webkit-text-stroke-width: 0px; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9pnreOM1O_ZobhqKmDcEIli-pMxLMwvkbHTQj4B3debKC2eiBA8qtYPNdw4ZvKeqfnB7LI732ckuUzw3NjxA9-xjVzGejKoTtfzdF24gMGICEo8c9_1WMEjG4HLargmVNtHtba3hM1Zw12HiMaTCKJ72B9oTHex72wM4fcPzCr74z6cez2XoYMA1xaHs/s1004/code-snippets-2-2-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="805" data-original-width="1004" height="514" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9pnreOM1O_ZobhqKmDcEIli-pMxLMwvkbHTQj4B3debKC2eiBA8qtYPNdw4ZvKeqfnB7LI732ckuUzw3NjxA9-xjVzGejKoTtfzdF24gMGICEo8c9_1WMEjG4HLargmVNtHtba3hM1Zw12HiMaTCKJ72B9oTHex72wM4fcPzCr74z6cez2XoYMA1xaHs/w640-h514/code-snippets-2-2-3.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;p&gt;&lt;/p&gt;</description><link>https://codesnip-app.blogspot.com/2025/04/code-snippets-collection-v223-released.html</link><author>noreply@blogger.com (Delphidabbler)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9pnreOM1O_ZobhqKmDcEIli-pMxLMwvkbHTQj4B3debKC2eiBA8qtYPNdw4ZvKeqfnB7LI732ckuUzw3NjxA9-xjVzGejKoTtfzdF24gMGICEo8c9_1WMEjG4HLargmVNtHtba3hM1Zw12HiMaTCKJ72B9oTHex72wM4fcPzCr74z6cez2XoYMA1xaHs/s72-w640-h514-c/code-snippets-2-2-3.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-5578498208614908152</guid><pubDate>Sun, 19 Jan 2025 10:39:00 +0000</pubDate><atom:updated>2025-01-19T10:39:18.538+00:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code Snippets</category><category domain="http://www.blogger.com/atom/ns#">CodeSnip</category><category domain="http://www.blogger.com/atom/ns#">Delphi</category><category domain="http://www.blogger.com/atom/ns#">Pascal</category><category domain="http://www.blogger.com/atom/ns#">Pascal Snippets</category><category domain="http://www.blogger.com/atom/ns#">Source Code</category><title>Code Snippets Collection v2.2.2 released</title><description>&lt;p&gt;Version 2.2.2 of my Pascal &lt;a href="https://github.com/delphidabbler/code-snippets" target="_blank"&gt;code snippets collection&lt;/a&gt; has just been released.&amp;nbsp;&lt;/p&gt;&lt;blockquote style="border: none; margin: 0 0 0 40px; padding: 0px;"&gt;&lt;p style="text-align: left;"&gt;Don't let the patch version&amp;nbsp;number bump fool you. There are a lot of new snippets in this release. In fact, it's the first time in years that so many new snippets have been added.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Nearly all the new snippets are mathematical. A few snippets were added to the Arrays category, but most got grouped into the Mathematics category. Some snippets relate to number theory while others work with numbers in different bases. However the majority relate to statistics, including functions to calculate Arithmetic, Geometric, Harmonic, Logarithmic and Power means.&lt;/p&gt;&lt;p&gt;I'm not going to list them all here, that would be tedious. See the &lt;a href="https://github.com/delphidabbler/code-snippets/blob/v2.2.2/CHANGELOG.md" target="_blank"&gt;change log&lt;/a&gt; for a full list of the new functions &amp;amp; other changes.&lt;/p&gt;&lt;p&gt;A couple of existing snippets have been modified, in one case to fix a bug.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Unit tests have been added for every new snippet and for one existing snippet.&lt;/p&gt;&lt;p&gt;All the new snippets compile without problem with Delphi XE and 12.2. I expect there will be no problems with Delphi release between those two. Several snippets use generics, so won't compile with the ever-popular Delphi 7.&lt;/p&gt;&lt;p&gt;If you are using &lt;a href="https://delphidabbler.com/software/codesnip" target="_blank"&gt;CodeSnip&lt;/a&gt; v4.16 or later then you can update your snippets collection by using the &lt;i&gt;Database | Install or Update DelphiDabbler Snippets Database&lt;/i&gt;&amp;nbsp;menu option and following the instructions in the resulting wizard.&lt;/p&gt;&lt;p&gt;&lt;b&gt;➤ You can find the new release on &lt;a href="https://github.com/delphidabbler/code-snippets/releases/tag/v2.2.2" target="_blank"&gt;GitHub&lt;/a&gt;.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEYu0nCn0CACOpo0AcT4p9mabAB_kJBgmqJwkAQIEOfP0cH_lBAdJwLJmrCfNOD0TWXst7GJauJUWeylBb0nn8Ao-RKnP_TwR5nFPllFCuYhxfqaIBHwkSBhBGdUPbowgxc_HbVKCqo8jpSOmIS7z_gGOnKuBDGzbry5PfOZCQ2Tc-XgVHlUZIB4EU2Ps/s1519/code-snippets-2.2.2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1118" data-original-width="1519" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEYu0nCn0CACOpo0AcT4p9mabAB_kJBgmqJwkAQIEOfP0cH_lBAdJwLJmrCfNOD0TWXst7GJauJUWeylBb0nn8Ao-RKnP_TwR5nFPllFCuYhxfqaIBHwkSBhBGdUPbowgxc_HbVKCqo8jpSOmIS7z_gGOnKuBDGzbry5PfOZCQ2Tc-XgVHlUZIB4EU2Ps/s16000/code-snippets-2.2.2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;CodeSnip 4 displaying LSE, one of the may new snippets in v2.2.2&lt;/i&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="text-align: left;"&gt;&lt;i&gt;&lt;span style="font-family: trebuchet;"&gt;ASIDE: The reason that this big&amp;nbsp;update only gets a patch release is down to semantic versioning: the release adds nothing to the collection that can't be read by any program that can read v2.2.0 of the collection.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style="text-align: left;"&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style="text-align: left;"&gt;&lt;br /&gt;&lt;/p&gt;</description><link>https://codesnip-app.blogspot.com/2025/01/code-snippets-collection-v222-released.html</link><author>noreply@blogger.com (Delphidabbler)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEYu0nCn0CACOpo0AcT4p9mabAB_kJBgmqJwkAQIEOfP0cH_lBAdJwLJmrCfNOD0TWXst7GJauJUWeylBb0nn8Ao-RKnP_TwR5nFPllFCuYhxfqaIBHwkSBhBGdUPbowgxc_HbVKCqo8jpSOmIS7z_gGOnKuBDGzbry5PfOZCQ2Tc-XgVHlUZIB4EU2Ps/s72-c/code-snippets-2.2.2.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-3944384937755142358</guid><pubDate>Wed, 23 Oct 2024 21:07:00 +0000</pubDate><atom:updated>2024-10-23T22:12:25.052+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Code Snippets</category><category domain="http://www.blogger.com/atom/ns#">CodeSnip</category><category domain="http://www.blogger.com/atom/ns#">Delphi</category><category domain="http://www.blogger.com/atom/ns#">Pascal</category><category domain="http://www.blogger.com/atom/ns#">Pascal Snippets</category><category domain="http://www.blogger.com/atom/ns#">Source Code</category><title>CodeSnip v4.24.0 released</title><description>&lt;p&gt;&lt;a href="https://delphidabbler.com/software/codesnip" target="_blank"&gt;CodeSnip&lt;/a&gt; v4.24.0 has just been released.&lt;/p&gt;&lt;p&gt;There's no main feature in this release. It's a bit of a mish-mash of numerous minor bug fixes and tweaks that have been implemented since the previous release.&lt;/p&gt;&lt;p&gt;I'm not going into detail about the numerous small changes here: check out the &lt;a href="https://github.com/delphidabbler/codesnip/blob/master/CHANGELOG.md" target="_blank"&gt;change log&lt;/a&gt; if you're interested.&lt;/p&gt;&lt;p&gt;Do you need this release? Well, its not going to knock your socks off, but there are a couple of bug fixes, so installing it wouldn't do any harm.&lt;/p&gt;&lt;p&gt;✅ Get v4.24.0 from its &lt;a href="https://github.com/delphidabbler/codesnip/releases/tag/version-4.24.0" target="_blank"&gt;GitHub releases page&lt;/a&gt;.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuylueUgSj6Gp-Xgwvlf6FrYBBz2CVKtojJwrAD8_cXyM_xAMct7eId38vklDv4TAhPvxcJU1sFUtA4WRJD_l-xIFkhYN3ebzuWfW__60easMGGE7XyPC9PqDfQV3Q65GpBJV4SHaHQeRFqivSY3AWfObN55kIiva4aBBl1WpH7VblFiXnv-5RczJhJfI/s1560/codesnip-4-24-0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1560" data-original-width="1396" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuylueUgSj6Gp-Xgwvlf6FrYBBz2CVKtojJwrAD8_cXyM_xAMct7eId38vklDv4TAhPvxcJU1sFUtA4WRJD_l-xIFkhYN3ebzuWfW__60easMGGE7XyPC9PqDfQV3Q65GpBJV4SHaHQeRFqivSY3AWfObN55kIiva4aBBl1WpH7VblFiXnv-5RczJhJfI/w573-h640/codesnip-4-24-0.png" width="573" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;</description><link>https://codesnip-app.blogspot.com/2024/10/codesnip-v4240-released.html</link><author>noreply@blogger.com (Delphidabbler)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuylueUgSj6Gp-Xgwvlf6FrYBBz2CVKtojJwrAD8_cXyM_xAMct7eId38vklDv4TAhPvxcJU1sFUtA4WRJD_l-xIFkhYN3ebzuWfW__60easMGGE7XyPC9PqDfQV3Q65GpBJV4SHaHQeRFqivSY3AWfObN55kIiva4aBBl1WpH7VblFiXnv-5RczJhJfI/s72-w573-h640-c/codesnip-4-24-0.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-6770866840760353033</guid><pubDate>Tue, 15 Oct 2024 17:00:00 +0000</pubDate><atom:updated>2024-10-15T18:00:32.602+01:00</atom:updated><title>Released v2.2.0 of the Code Snippets Collection</title><description>&lt;p style="text-align: left;"&gt;Finally, months after I meant to, I've released v2.2.0 of the DelphiDabbler Code Snippets Collection.&lt;/p&gt;&lt;p style="text-align: left;"&gt;This is a collection of snippets that can be loaded into CodeSnip program. To do so, download &lt;span style="font-family: courier;"&gt;csdb-v2.2.0-data.zip&lt;/span&gt; from the &lt;a href="https://github.com/delphidabbler/code-snippets/releases/tag/v2.2.0" target="_blank"&gt;GitHub release page&lt;/a&gt;. Unzip it somewhere on your system then run CodeSnip. Select the &lt;i&gt;Install or Update DelphiDabbler Snippets Database&lt;/i&gt;&amp;nbsp;menu option and follow the wizard.&lt;/p&gt;&lt;p style="text-align: left;"&gt;If you would like to run tests on some of the snippets then download&amp;nbsp;&lt;span style="font-family: courier;"&gt;csdb-v2.2.0-tests.zip&lt;/span&gt;&amp;nbsp;from the same place. Read the included read-me file for info about how to run the tests.&lt;/p&gt;&lt;p style="text-align: left;"&gt;Finally there's comprehensive documentation in&amp;nbsp;&lt;span style="font-family: courier;"&gt;csdb-v2.2.0-docs.zip&lt;/span&gt;.&lt;/p&gt;&lt;p style="text-align: left;"&gt;In this release the main feature is the addition of a few routines to the Mathematics category. Specifically there are three IEEE conformant Pown routines and a couple of heavily overloaded summing functions. For details of these and other changes see the &lt;a href="https://github.com/delphidabbler/code-snippets/blob/v2.2.0/CHANGELOG.md" target="_blank"&gt;change log&lt;/a&gt;.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoW3yVk922azVU-cPWvhUp80mgxjy4R6j2-01Ig-I7DPTEe4vadC-8BpGmGWwHVpX72afifU59WPoa6vzI9NcdaXiyMrZzxUFdmF1EQqcXb5E9MP4XdW-ozC5G_QFDX2xYiM_lC8JniGYY1QdXO1ScacDvPJI7rsNUZ8Bxvx6OQMp8mj1no9Ivxti79i0/s999/code-snippets-2.2.0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="696" data-original-width="999" height="279" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoW3yVk922azVU-cPWvhUp80mgxjy4R6j2-01Ig-I7DPTEe4vadC-8BpGmGWwHVpX72afifU59WPoa6vzI9NcdaXiyMrZzxUFdmF1EQqcXb5E9MP4XdW-ozC5G_QFDX2xYiM_lC8JniGYY1QdXO1ScacDvPJI7rsNUZ8Bxvx6OQMp8mj1no9Ivxti79i0/w400-h279/code-snippets-2.2.0.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p style="text-align: left;"&gt;&lt;br /&gt;&lt;/p&gt;</description><link>https://codesnip-app.blogspot.com/2024/10/released-v220-of-code-snippets.html</link><author>noreply@blogger.com (Delphidabbler)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoW3yVk922azVU-cPWvhUp80mgxjy4R6j2-01Ig-I7DPTEe4vadC-8BpGmGWwHVpX72afifU59WPoa6vzI9NcdaXiyMrZzxUFdmF1EQqcXb5E9MP4XdW-ozC5G_QFDX2xYiM_lC8JniGYY1QdXO1ScacDvPJI7rsNUZ8Bxvx6OQMp8mj1no9Ivxti79i0/s72-w400-h279-c/code-snippets-2.2.0.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-4291504128665063339</guid><pubDate>Thu, 04 Apr 2024 15:24:00 +0000</pubDate><atom:updated>2024-04-04T16:24:32.535+01:00</atom:updated><title>CodeSnip and Delphi 12.1</title><description>&lt;p&gt;Now that Delphi 12.1 has been released the question of whether a new release of &lt;a href="https://delphidabbler.com/software/codesnip" target="_blank"&gt;CodeSnip&lt;/a&gt; is needed to work with it.&lt;/p&gt;&lt;p&gt;The answer is no, it's not. That's because Delphi 12.1 can't be installed alongside Delphi 12.0 - it's either/or. Furthermore, Delphi 12.1 appears to CodeSnip just like Delphi 12.0, so CodeSnip will happily use it to test compile snippets if it is installed.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBMYZTIkKz8_98CpmKK7AmbXEI1VlZP8Ivhq5S1kr-3dJInpsPQ6z4EOI8V5tvOHLLnsfbZgiULAxtJvO7TEzdKf364Pqe_YIohfY7WDg_kTb-bcWf_LGwVXR_LUrj4jMzgNmAwLqFxWxizkDWRp7Vs4anz62PJsW0SJgYg8LNSQOzv5Ph82dkWyRaWDU/s399/codesnip-4-30-0-compiler-list-changes~2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="141" data-original-width="399" height="141" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBMYZTIkKz8_98CpmKK7AmbXEI1VlZP8Ivhq5S1kr-3dJInpsPQ6z4EOI8V5tvOHLLnsfbZgiULAxtJvO7TEzdKf364Pqe_YIohfY7WDg_kTb-bcWf_LGwVXR_LUrj4jMzgNmAwLqFxWxizkDWRp7Vs4anz62PJsW0SJgYg8LNSQOzv5Ph82dkWyRaWDU/w400-h141/codesnip-4-30-0-compiler-list-changes~2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description><link>https://codesnip-app.blogspot.com/2024/04/codesnip-and-delphi-121.html</link><author>noreply@blogger.com (Delphidabbler)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBMYZTIkKz8_98CpmKK7AmbXEI1VlZP8Ivhq5S1kr-3dJInpsPQ6z4EOI8V5tvOHLLnsfbZgiULAxtJvO7TEzdKf364Pqe_YIohfY7WDg_kTb-bcWf_LGwVXR_LUrj4jMzgNmAwLqFxWxizkDWRp7Vs4anz62PJsW0SJgYg8LNSQOzv5Ph82dkWyRaWDU/s72-w400-h141-c/codesnip-4-30-0-compiler-list-changes~2.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-368051567550299189</guid><pubDate>Tue, 02 Apr 2024 15:43:00 +0000</pubDate><atom:updated>2024-04-02T16:43:10.318+01:00</atom:updated><title>CodeSnip v4.23.0 Released</title><description>&lt;p&gt;Today I released an&amp;nbsp;&lt;a href="https://github.com/delphidabbler/codesnip/releases/tag/version-4.23.0" target="_blank"&gt;update to CodeSnip&lt;/a&gt;&amp;nbsp;that makes two little changes:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;The marketing names have been removed from later Delphi versions (e.g. Athens &amp;amp; Rio) to save space in the UI if you have several versions of Delphi registered. So now instead of seeing &lt;i&gt;Delphi 12 Athens&lt;/i&gt; you will see &lt;i&gt;Delphi 12.x&lt;/i&gt;, for example.&lt;/li&gt;&lt;li&gt;The built in REML markup language that can be used to format snippet descriptions and "Extra" text, now supports the &lt;span style="font-family: courier;"&gt;&amp;amp;apos;&lt;/span&gt; character entity that gets replaced by a single quote when rendered.&lt;/li&gt;&lt;/ol&gt;&lt;p style="text-align: left;"&gt;For the complete change log see &lt;a href="https://github.com/delphidabbler/codesnip/blob/version-4.23.0/CHANGELOG.md" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVhYV5x1xsfDhQZdUYAPjF_G5jxqEnD5n3_Vb6t1q-MAF20P1IiEJMLkmsqiXBoaKhFPN7Esjf8hKhJqL7Vng72vVxEfOnJehC5QFOx5EmjQxZN1RC6hlHZLH3B3DI_HqKxplleid8sep9JRPtS8Pxy9oeIktXAFCpYiZILDXM_jlcpHkM8tfw8uBV1BM/s692/codesnip-4-30-0-compiler-list-changes.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="599" data-original-width="692" height="346" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVhYV5x1xsfDhQZdUYAPjF_G5jxqEnD5n3_Vb6t1q-MAF20P1IiEJMLkmsqiXBoaKhFPN7Esjf8hKhJqL7Vng72vVxEfOnJehC5QFOx5EmjQxZN1RC6hlHZLH3B3DI_HqKxplleid8sep9JRPtS8Pxy9oeIktXAFCpYiZILDXM_jlcpHkM8tfw8uBV1BM/w400-h346/codesnip-4-30-0-compiler-list-changes.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;Compiler name changes in v4.23.0&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS0lkd3MLARqgzIzjBaQ23eJMRIhl-h4P2qMWPn4QhUwepRdGa7Zhdp7npHq00wpyjkS4Wg08UTMUbHQjW6PcDpqMqsq5KXoATKB-ok2RzgnTBzFSrNjSA3_l82qIXOC5TRRF2Vp08x7NBExrMY8EnBNgtwKm6AyObzc7qUgIgqQ5taPC9mVJiVCn9mRU/s631/codesnip-4-30-0-reml-changes.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="239" data-original-width="631" height="151" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS0lkd3MLARqgzIzjBaQ23eJMRIhl-h4P2qMWPn4QhUwepRdGa7Zhdp7npHq00wpyjkS4Wg08UTMUbHQjW6PcDpqMqsq5KXoATKB-ok2RzgnTBzFSrNjSA3_l82qIXOC5TRRF2Vp08x7NBExrMY8EnBNgtwKm6AyObzc7qUgIgqQ5taPC9mVJiVCn9mRU/w400-h151/codesnip-4-30-0-reml-changes.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;New REML character entity in v4.23.0&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</description><link>https://codesnip-app.blogspot.com/2024/04/codesnip-v4230-released.html</link><author>noreply@blogger.com (Delphidabbler)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVhYV5x1xsfDhQZdUYAPjF_G5jxqEnD5n3_Vb6t1q-MAF20P1IiEJMLkmsqiXBoaKhFPN7Esjf8hKhJqL7Vng72vVxEfOnJehC5QFOx5EmjQxZN1RC6hlHZLH3B3DI_HqKxplleid8sep9JRPtS8Pxy9oeIktXAFCpYiZILDXM_jlcpHkM8tfw8uBV1BM/s72-w400-h346-c/codesnip-4-30-0-compiler-list-changes.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-8384071440075907086</guid><pubDate>Wed, 08 Nov 2023 09:35:00 +0000</pubDate><atom:updated>2023-11-08T09:35:20.603+00:00</atom:updated><title>CodeSnip v4.22.0 released</title><description>&lt;p&gt;Yesterday, Delphi 12 was released as part of &lt;a href="https://blogs.embarcadero.com/announcing-the-availability-of-rad-studio-12-athens/amp/" rel="nofollow" target="_blank"&gt;RAD Studio 12 "Athens"&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Today there's an &lt;a href="https://github.com/delphidabbler/codesnip/releases/tag/version-4.22.0" target="_blank"&gt;update to CodeSnip&lt;/a&gt;&amp;nbsp;that gives the option of using the new Delphi 12 to test compile your code snippets.&lt;/p&gt;&lt;p&gt;It's really simple to configure CodeSnip to use Delphi 12. The first time you start CodeSnip after installing Delphi 12 a dialogue box will pop up and ask if you want to use the compiler alongside any other versions you may have:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXCCNlK3yB4Zkkkrbmi3Enilj_Dk5wzmKc0TF-0BapOuELqK1tnNIHV_QGuAX7bPY8wxC2fbjgnu7wmQKLoDyjzCkri7C1DDjYBbLTvt_05188QBtfB87HgMBdfiFCVWDcwU4SkSghot_07VKyMh-qhUUV4iLXyUnOil2rnU40VwjCUGm_6s_hozAXWYs/s752/codesnip-4.22-ss1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="752" data-original-width="660" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXCCNlK3yB4Zkkkrbmi3Enilj_Dk5wzmKc0TF-0BapOuELqK1tnNIHV_QGuAX7bPY8wxC2fbjgnu7wmQKLoDyjzCkri7C1DDjYBbLTvt_05188QBtfB87HgMBdfiFCVWDcwU4SkSghot_07VKyMh-qhUUV4iLXyUnOil2rnU40VwjCUGm_6s_hozAXWYs/w351-h400/codesnip-4.22-ss1.png" width="351" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;That will happen only if you haven't turned off the auto-register compiler option. If that's the case you'll need to use the &lt;i&gt;Tools | Configure Compilers&lt;/i&gt; menu option to set it up yourself. The &lt;i&gt;Detect Delphi Compilers&lt;/i&gt; button in the &lt;i&gt;Configure Compilers&lt;/i&gt; dialogue box will do the trick:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjIZwC2SdUMOX0rub4NjzNbnTRAN3H_oEk62n2yyPbDsOH1Db5ONOWCXyE4FIy7q98rUf8b3BAFySoUt_d5bX1tGJX0LCR47ixPFHQy5QBBuj_E1YOeGJa8_wwcjktDTqJGF19fLnuQxO1QVhsvZQQo27eYUgthMnSJylDvy6eM07V38ihoI0JV3KRBcA/s972/codesnip-4.22-ss2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="717" data-original-width="972" height="472" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjIZwC2SdUMOX0rub4NjzNbnTRAN3H_oEk62n2yyPbDsOH1Db5ONOWCXyE4FIy7q98rUf8b3BAFySoUt_d5bX1tGJX0LCR47ixPFHQy5QBBuj_E1YOeGJa8_wwcjktDTqJGF19fLnuQxO1QVhsvZQQo27eYUgthMnSJylDvy6eM07V38ihoI0JV3KRBcA/w640-h472/codesnip-4.22-ss2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;The only other user-facing change is that the list of compilers in the &lt;i&gt;Configure Compilers&lt;/i&gt; and &lt;i&gt;Find Compilers&lt;/i&gt; dialogue boxes is now sorted with the newest Delphi versions first instead of them being hidden down the bottom an increasingly long list.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZUJxIMsVVLHyI-Bo0fkuVjdEO9NQECu02HX6SkdX0a10Fk_dxK2EZGNIVZU-v6y6Ro9ycrYsxs-6f72gMcq1sE3OQTS2nwTqOgKDQPBle0PhN-YWptkIgwEMTxh5pYsH16UnfV96E8puODc4SoY3spmYfv3G_S4PUCsWS5tCdZdWe8lG1_8dOoC3ue2I/s627/codesnip-4.22-ss3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="553" data-original-width="627" height="353" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZUJxIMsVVLHyI-Bo0fkuVjdEO9NQECu02HX6SkdX0a10Fk_dxK2EZGNIVZU-v6y6Ro9ycrYsxs-6f72gMcq1sE3OQTS2nwTqOgKDQPBle0PhN-YWptkIgwEMTxh5pYsH16UnfV96E8puODc4SoY3spmYfv3G_S4PUCsWS5tCdZdWe8lG1_8dOoC3ue2I/w400-h353/codesnip-4.22-ss3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;There's one source code change for the purists: you'll no longer find a single &lt;span style="font-family: courier;"&gt;&lt;b&gt;with&lt;/b&gt;&lt;/span&gt; statement in the CodeSnip source. &#128079;&#128079;&#128079;&lt;/p&gt;&lt;p&gt;As usual, there are separate standard and portable builds available. Both editions, along with the source code, can found on the CodeSnip project's &lt;b&gt;&lt;a href="https://github.com/delphidabbler/codesnip/releases/tag/version-4.22.0" target="_blank"&gt;releases page&lt;/a&gt;&lt;/b&gt; on GitHub.&lt;/p&gt;&lt;p&gt;For more info about CodeSnip see its &lt;a href="https://delphidabbler.com/software/codesnip" target="_blank"&gt;web page&lt;/a&gt; and &lt;a href="https://github.com/delphidabbler/codesnip/blob/master/README.md" target="_blank"&gt;GitHub read-me&lt;/a&gt; file.&lt;/p&gt;</description><link>https://codesnip-app.blogspot.com/2023/11/codesnip-v4220-released.html</link><author>noreply@blogger.com (Delphidabbler)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXCCNlK3yB4Zkkkrbmi3Enilj_Dk5wzmKc0TF-0BapOuELqK1tnNIHV_QGuAX7bPY8wxC2fbjgnu7wmQKLoDyjzCkri7C1DDjYBbLTvt_05188QBtfB87HgMBdfiFCVWDcwU4SkSghot_07VKyMh-qhUUV4iLXyUnOil2rnU40VwjCUGm_6s_hozAXWYs/s72-w351-h400-c/codesnip-4.22-ss1.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-3733229108804930020</guid><pubDate>Fri, 14 Jul 2023 07:50:00 +0000</pubDate><atom:updated>2023-07-14T08:56:56.469+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code Snippets</category><category domain="http://www.blogger.com/atom/ns#">CodeSnip</category><category domain="http://www.blogger.com/atom/ns#">Delphi Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Pascal Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Source Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Source Code Repository</category><title>Released CodeSnip v4.21.2 (minor bug fixes)</title><description>&lt;p&gt;&lt;a href="https://delphidabbler.com/software/codesnip" target="_blank"&gt;CodeSnip&lt;/a&gt; v4.21.2 has been released today, 14th July 2023.&lt;/p&gt;&lt;p&gt;This is a patch release that fixes a few minor bugs:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Fixed some broken and "unsafe" (http) links in the about box.&lt;/li&gt;&lt;li&gt;Fixed error in version information.&lt;/li&gt;&lt;li&gt;Fixed potential XSS vulnerability in JQuery code used in the program's easter egg .&lt;/li&gt;&lt;li&gt;Updated and clarified license &amp;amp; some other docs.&lt;/li&gt;&lt;/ul&gt;Do you need this release? Depends on how much you're bothered about the above errors. Up to you.&lt;p&gt;&lt;/p&gt;&lt;p&gt;⏬&lt;b&gt;Get the new release from the&amp;nbsp;&lt;a href="https://github.com/delphidabbler/codesnip/releases/tag/version-4.21.2" target="_blank"&gt;v4.21.2 release page&lt;/a&gt;&amp;nbsp;on GitHub.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3Qy6KWiCPzlAo8G25pjuL7BtqnM_E8ByIQsrGou5E3J5xO1IbkEoNApRD3PqeqBNr4-Uq4Iyq84U4M5fuPT3B8QGmBQuuMjPAb39DbJ9jHi3nuaxqT8RJDMjfwk_UIkCIwqs-D9D1u4XchE3LlAF9KfgWCZbWvc7x_jvsCfGCqt0KiqiaxX9mht9BDTY/s924/codesnip-4.21.2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="924" data-original-width="742" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3Qy6KWiCPzlAo8G25pjuL7BtqnM_E8ByIQsrGou5E3J5xO1IbkEoNApRD3PqeqBNr4-Uq4Iyq84U4M5fuPT3B8QGmBQuuMjPAb39DbJ9jHi3nuaxqT8RJDMjfwk_UIkCIwqs-D9D1u4XchE3LlAF9KfgWCZbWvc7x_jvsCfGCqt0KiqiaxX9mht9BDTY/w321-h400/codesnip-4.21.2.png" width="321" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;p&gt;&lt;/p&gt;</description><link>https://codesnip-app.blogspot.com/2023/07/released-codesnip-v4212-minor-bug-fixes.html</link><author>noreply@blogger.com (Delphidabbler)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3Qy6KWiCPzlAo8G25pjuL7BtqnM_E8ByIQsrGou5E3J5xO1IbkEoNApRD3PqeqBNr4-Uq4Iyq84U4M5fuPT3B8QGmBQuuMjPAb39DbJ9jHi3nuaxqT8RJDMjfwk_UIkCIwqs-D9D1u4XchE3LlAF9KfgWCZbWvc7x_jvsCfGCqt0KiqiaxX9mht9BDTY/s72-w321-h400-c/codesnip-4.21.2.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-5218500901523214692</guid><pubDate>Sun, 09 Apr 2023 15:35:00 +0000</pubDate><atom:updated>2023-04-09T16:35:20.779+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code Snippets</category><category domain="http://www.blogger.com/atom/ns#">CodeSnip</category><category domain="http://www.blogger.com/atom/ns#">Delphi Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Pascal Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Source Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Source Code Repository</category><title>Released CodeSnip v4.21.1 (bug fix)</title><description>&lt;div&gt;&lt;p style="clear: both; text-align: left;"&gt;Back in December 2022 I was quite pleased with myself for releasing the v4.21.0 update to &lt;a href="https://delphidabbler.com/software/codesnip" target="_blank"&gt;CodeSnip&lt;/a&gt;.&lt;/p&gt;&lt;p style="clear: both; text-align: left;"&gt;The main feature that was added in v4.21.0 work fine - automatically detecting un-registered Delphi compilers at start up - worked fine. But, oh dear, the more obscure new feature that lets you use lists in snippet descriptions was a bit of a disaster.&lt;/p&gt;&lt;p style="clear: both; text-align: left;"&gt;The main implementation of lists was a bit flaky, but the main problem is that I forgot to add the implementation of lists in snippets reports and in source code comments in generated units. This pretty much trashed the reports and comments.&lt;/p&gt;&lt;p style="clear: both; text-align: left;"&gt;It's taken a lot of coding to fix these bugs, hence the 4 month delay before this bug fix materialised. But I think I've managed it, although whether the new feature was worth the effort is debatable.&lt;/p&gt;&lt;p style="clear: both; text-align: left;"&gt;⏬&lt;b&gt;Get the new release from the &lt;a href="https://github.com/delphidabbler/codesnip/releases/tag/version-4.21.1" target="_blank"&gt;v4.21.1 release page&lt;/a&gt; on GitHub.&lt;/b&gt;&lt;/p&gt;&lt;p style="clear: both; text-align: left;"&gt;Here's what a snippet looks like in the UI when it's description contains an unordered list:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvgDzAj1DLuqHI9eMEiWgsyj4P3dqPVfvu1yplOVtvLGEnDDoTIDqh8ph-QPn-LlUowaGvkRjq1QteAwTCcqPaovESPLjpYT_GZNkEEYrxCsDOtqm1jVKFVy4Hk2PgCqp9zqlHfPAPMe3rPfGA5b2FJsA-ZzkjwtLRwA1lljcmRKYtP5rizL-QmQmR/s1142/CodeSnip-4.21.1-UI-list.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="414" data-original-width="1142" height="232" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvgDzAj1DLuqHI9eMEiWgsyj4P3dqPVfvu1yplOVtvLGEnDDoTIDqh8ph-QPn-LlUowaGvkRjq1QteAwTCcqPaovESPLjpYT_GZNkEEYrxCsDOtqm1jVKFVy4Hk2PgCqp9zqlHfPAPMe3rPfGA5b2FJsA-ZzkjwtLRwA1lljcmRKYtP5rizL-QmQmR/w640-h232/CodeSnip-4.21.1-UI-list.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style="clear: both; text-align: left;"&gt;Here's how the same snippet appears in a generated unit or in annotated source code:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivFLLOvxhe6slweTnFUyPmyzeHSubnROjB4oLa3TNNU5UMgkHZcQgSo3EPiSVQ6aiFZ_Z8TUqfWD_shY7xY3wfB4oeDjZWEU5XQO_fbLAwUYyfQNDd3xfD2TICOfguTT12bMtFnQ57AtvvoICcVZY8AJEHDweLIdD4kieeICGoHhQOLKDzf0V9eqB7/s1048/CodeSnip-4.21.1-unit-source-list.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="599" data-original-width="1048" height="366" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivFLLOvxhe6slweTnFUyPmyzeHSubnROjB4oLa3TNNU5UMgkHZcQgSo3EPiSVQ6aiFZ_Z8TUqfWD_shY7xY3wfB4oeDjZWEU5XQO_fbLAwUYyfQNDd3xfD2TICOfguTT12bMtFnQ57AtvvoICcVZY8AJEHDweLIdD4kieeICGoHhQOLKDzf0V9eqB7/w640-h366/CodeSnip-4.21.1-unit-source-list.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style="clear: both; text-align: left;"&gt;And in RTF (top) and plain text (bottom) reports look like this:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjh30ez7RBcKiq-P-7GxRrTHQQLS-JuAyeBDzklFv9mqeReTIqCQagNwpZ0-vxCuHYQHzYg5rhH9hzeIXHHvUnG0Xzu6s7uCNNX8ZEBlskSHMD4kddwueJxdNUoSKPjwX9CHd5TmpG3JZdBQu-NHPJLbKwmi02V9oqE5_YvKz9Y8VJO4Rf7RokcWgIG/s1130/CodeSnip-4.21.1-RTF+Text-list.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1130" data-original-width="1053" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjh30ez7RBcKiq-P-7GxRrTHQQLS-JuAyeBDzklFv9mqeReTIqCQagNwpZ0-vxCuHYQHzYg5rhH9hzeIXHHvUnG0Xzu6s7uCNNX8ZEBlskSHMD4kddwueJxdNUoSKPjwX9CHd5TmpG3JZdBQu-NHPJLbKwmi02V9oqE5_YvKz9Y8VJO4Rf7RokcWgIG/w596-h640/CodeSnip-4.21.1-RTF+Text-list.png" width="596" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style="clear: both; text-align: left;"&gt;These reports were generated by doing&amp;nbsp;&lt;i&gt;Edit | Copy Information&lt;/i&gt;&amp;nbsp;and pasting first into WordPad and then into Notepad++.&lt;/p&gt;&lt;p style="clear: both; text-align: left;"&gt;There was another bug that affected reports that got fixed. This one went back before v4.21.0 and it related to the table of compiler results having misaligned comments. Anyhow, they're now aligned once again in both text and RTF reports, as can be seen below:&lt;/p&gt;&lt;p style="clear: both; text-align: left;"&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgURTfu-V7ROAtdjmAtT0sDg40bJL4jRNnuQBcAdD45_VaQdup9gCVuEbM2ZcTOvdxps8mm8QX6ZYGqbVrM8Di4M57HEyhAuqCVkbZVtf9kxS2RMSQCvu6dxAuIncplBq3Qebcf3VH5Na86O3QhRkxN1pDFu1HwcbPw-GbWDx0aQqDQIWUlmCBt9s6L/s1116/CodeSnip-4.21.1-DOSCommand-compres.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="825" data-original-width="1116" height="474" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgURTfu-V7ROAtdjmAtT0sDg40bJL4jRNnuQBcAdD45_VaQdup9gCVuEbM2ZcTOvdxps8mm8QX6ZYGqbVrM8Di4M57HEyhAuqCVkbZVtf9kxS2RMSQCvu6dxAuIncplBq3Qebcf3VH5Na86O3QhRkxN1pDFu1HwcbPw-GbWDx0aQqDQIWUlmCBt9s6L/w640-h474/CodeSnip-4.21.1-DOSCommand-compres.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;There were several other bugs squashed. For details see the &lt;a href="https://github.com/delphidabbler/codesnip/blob/version-4.21.1/CHANGELOG.md" target="_blank"&gt;change log&lt;/a&gt;.&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</description><link>https://codesnip-app.blogspot.com/2023/04/released-codesnip-v4211-bug-fix.html</link><author>noreply@blogger.com (Delphidabbler)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvgDzAj1DLuqHI9eMEiWgsyj4P3dqPVfvu1yplOVtvLGEnDDoTIDqh8ph-QPn-LlUowaGvkRjq1QteAwTCcqPaovESPLjpYT_GZNkEEYrxCsDOtqm1jVKFVy4Hk2PgCqp9zqlHfPAPMe3rPfGA5b2FJsA-ZzkjwtLRwA1lljcmRKYtP5rizL-QmQmR/s72-w640-h232-c/CodeSnip-4.21.1-UI-list.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-3488487867877538081</guid><pubDate>Fri, 16 Dec 2022 17:50:00 +0000</pubDate><atom:updated>2022-12-16T17:50:46.303+00:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code Snippets</category><category domain="http://www.blogger.com/atom/ns#">CodeSnip</category><category domain="http://www.blogger.com/atom/ns#">Delphi Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Pascal Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Source Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Source Code Repository</category><title>Released CodeSnip v4.21.0</title><description>&lt;p style="text-align: left;"&gt;To close off the year, here's a new release of &lt;a href="https://delphidabbler.com/software/codesnip" target="_blank"&gt;CodeSnip&lt;/a&gt;&amp;nbsp;that adds a couple of new features that have been in the pipeline for quite a while.&lt;/p&gt;&lt;p style="text-align: left;"&gt;&lt;b&gt;The first&lt;/b&gt; is one I've been working on ever since a user missed out on getting Delphi 11.x Alexandria support when I added it. He expected CodeSnip to just use it when test compiling snippets. It didn't do that. I think his expectation was valid, so I decided to make CodeSnip a bit cleverer!&lt;/p&gt;&lt;p style="text-align: left;"&gt;Until now, when support for a new Delphi version was added to CodeSnip you would have to remember to tell it you wanted to use the new compiler, if you had it installed.&lt;/p&gt;&lt;p style="text-align: left;"&gt;Now, when CodeSnip starts it checks if there are any versions of Delphi on your system that are not registered with CodeSnip for use when test compiling snippets. If it finds any it offers to register them for you.&lt;/p&gt;&lt;p style="text-align: left;"&gt;This feature only works for any version of Delphi that CodeSnip knows about, which for the moment is all of them from Delphi 2 to Delphi 11.x Alexandria. This doesn't work for Free Pascal.&lt;/p&gt;&lt;p style="text-align: left;"&gt;Here's what you'll see when CodeSnip starts if it discovers compilers that it hasn't got access to:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqNvrswx2nP3unfwuqYLRe__5Xf_x1O9M3c7xOfXxg-U15hTTkS7kSJnmKkDpl5jTlWDTc9jgq9j_14Zq26qXuTzNBs9RGaALtPFloimdtJ-JGlcKmOUZDB-Xb1HBhDuwE4UZ3mdE80vNk8BkqdWmAqPZ5aGH5QiMvqWGr99CSnyZpPRFbJf4-6Hfe/s752/Screenshot_20221216_110253.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="752" data-original-width="660" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqNvrswx2nP3unfwuqYLRe__5Xf_x1O9M3c7xOfXxg-U15hTTkS7kSJnmKkDpl5jTlWDTc9jgq9j_14Zq26qXuTzNBs9RGaALtPFloimdtJ-JGlcKmOUZDB-Xb1HBhDuwE4UZ3mdE80vNk8BkqdWmAqPZ5aGH5QiMvqWGr99CSnyZpPRFbJf4-6Hfe/w351-h400/Screenshot_20221216_110253.png" width="351" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style="text-align: left;"&gt;If you tick the check box next to one or more compilers and click OK CodeSnip will register them and you'll get a confirmation like this:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhlTUaj2sk1ykU5Ext7kGWvVLwnfvVWoM4Z8bk1-APe-hZ0r_m8UcEtJpyHpuHdLGiybe_4TDRPHdwyEWKrm9XiyJ0WfWH-znD45mv91JLQIyQfPuT_qkwtJSvXvhX3-imrvmLKiLfxvId7crlza7E7GqlUwxdm5g2riRduRty8xyIOP4PrXPllbbb/s520/Screenshot_20221216_110903a.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="279" data-original-width="520" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhlTUaj2sk1ykU5Ext7kGWvVLwnfvVWoM4Z8bk1-APe-hZ0r_m8UcEtJpyHpuHdLGiybe_4TDRPHdwyEWKrm9XiyJ0WfWH-znD45mv91JLQIyQfPuT_qkwtJSvXvhX3-imrvmLKiLfxvId7crlza7E7GqlUwxdm5g2riRduRty8xyIOP4PrXPllbbb/w320-h172/Screenshot_20221216_110903a.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style="text-align: left;"&gt;And if you really don't want CodeSnip to do this? Well, if it displays the top dialogue box above, tick &lt;i&gt;Don't show this again&lt;/i&gt; to shut it up forever. If you change your mind you can turn the feature on or off again globally, or on a per compiler basis using the Configure Compilers dialogue box:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2HSBW0JH5dhf7R0Di78JX12rEUvJS9hze1lGYi9hfWnwe4k-Wnl7Na9zLQizNF8ThTxwBXRpSHAi90e9Z6ktryq3qh8AH6wsO55_9bVy6CS5ZTJ3p4kLrqd5N60j10szqT2HiTQrgCUON5zcDNLy-tsTw2Amv6lsLPiyzW36gYkmhUQn6oavc727A/s970/Config-Compilers.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="717" data-original-width="970" height="474" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2HSBW0JH5dhf7R0Di78JX12rEUvJS9hze1lGYi9hfWnwe4k-Wnl7Na9zLQizNF8ThTxwBXRpSHAi90e9Z6ktryq3qh8AH6wsO55_9bVy6CS5ZTJ3p4kLrqd5N60j10szqT2HiTQrgCUON5zcDNLy-tsTw2Amv6lsLPiyzW36gYkmhUQn6oavc727A/w640-h474/Config-Compilers.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style="text-align: left;"&gt;BTW, if you're curious how to go about detecting which Delphis are installed take a look at &lt;a href="https://delphidabbler.com/articles/article-27" target="_blank"&gt;this article&lt;/a&gt;.&lt;/p&gt;&lt;p style="text-align: left;"&gt;&lt;b&gt;The second&lt;/b&gt;&amp;nbsp;new feature will only really impact users who like to fancy-up their snippet descriptions with a bit of markup. CodeSnip uses a very small HTML like language called REML to format desciptions. Its been about 12 years since REML got any love, so I've finally extended it a little. At long last you can now use lists. The tags are the same as HTML: &lt;span style="font-family: courier;"&gt;&amp;lt;ol&amp;gt;&lt;/span&gt;, &lt;span style="font-family: courier;"&gt;&amp;lt;ul&amp;gt;&lt;/span&gt; and &lt;span style="font-family: courier;"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;. REML is a bit stricter than HTML - it will complain if you get the syntax wrong!&lt;/p&gt;&lt;p style="text-align: left;"&gt;A whole bunch of new character entities were added (too many to list here). For full details of what's available &lt;a href="https://htmlpreview.github.io/?https://github.com/delphidabbler/codesnip/blob/version-4.21.0/Docs/Design/reml.html" target="_blank"&gt;read the REML documentation.&lt;/a&gt;&lt;/p&gt;&lt;p style="text-align: left;"&gt;In the following some REML code is being entered on the &lt;i&gt;Extra Information&lt;/i&gt; tab of the snippets editor. You can also use REML in the description field on the &lt;i&gt;Code&lt;/i&gt; tab.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuF0sMQNgKlq-rMP3bhB97nN5P2aMF8AhKUmLDEW6xVpKhmL6shz5Mqk0cAyDC40eEVvS_YAkK9ni04pqYuHkLm0IKBjqcIq764OsDmsfmYMAkDRfsezq6wgJ_biu-1gSBBhm3_zlBdYn7RHLiGlqG0eJDGxHynYor89-jDWzunUeEnu71CnFvDUBj/s1185/Screenshot_20221216_113408.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1039" data-original-width="1185" height="562" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuF0sMQNgKlq-rMP3bhB97nN5P2aMF8AhKUmLDEW6xVpKhmL6shz5Mqk0cAyDC40eEVvS_YAkK9ni04pqYuHkLm0IKBjqcIq764OsDmsfmYMAkDRfsezq6wgJ_biu-1gSBBhm3_zlBdYn7RHLiGlqG0eJDGxHynYor89-jDWzunUeEnu71CnFvDUBj/w640-h562/Screenshot_20221216_113408.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style="clear: both; text-align: left;"&gt;Here's what the markup looks like when rendered:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimAI3663s1zJKLDZJa2Qzpinhd3jSVh6M7-p365MZ5w7amm2fl5yCq9Gtjm8tVrdS8FYRX5DQpUb17OCA6UyG4e0-mxUc_ky3apgVdCR--ewBYZ7jYA4wq__vAORwPvS1B1zRQIfMy4MnQgpzwnJIfDhS2Hiy6L_EkePiWqdosHAetlPIADE9fM-uD/s686/Screenshot_20221216_113512.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="440" data-original-width="686" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimAI3663s1zJKLDZJa2Qzpinhd3jSVh6M7-p365MZ5w7amm2fl5yCq9Gtjm8tVrdS8FYRX5DQpUb17OCA6UyG4e0-mxUc_ky3apgVdCR--ewBYZ7jYA4wq__vAORwPvS1B1zRQIfMy4MnQgpzwnJIfDhS2Hiy6L_EkePiWqdosHAetlPIADE9fM-uD/w400-h256/Screenshot_20221216_113512.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style="text-align: left;"&gt;&lt;b&gt;What else? &lt;/b&gt;Not much. There are a couple of minor changes to the open source EULA and the docs &amp;amp; help file have been updated re the above changes. See the &lt;a href="https://github.com/delphidabbler/codesnip/blob/version-4.21.0/CHANGELOG.md" target="_blank"&gt;change log&lt;/a&gt; for the gory details.&lt;/p&gt;&lt;p style="text-align: left;"&gt;As usual the CodeSnip comes in standard and portable editions.&lt;/p&gt;&lt;p style="text-align: left;"&gt;&lt;b&gt;You can get both editions, along with the source code, from the CodeSnip project's &lt;a href="https://github.com/delphidabbler/codesnip/releases/tag/version-4.21.0" target="_blank"&gt;releases page on GitHub&lt;/a&gt;.&lt;/b&gt;&lt;/p&gt;&lt;p style="text-align: left;"&gt;This release is available from &lt;a href="https://sourceforge.net/projects/codesnip/files/" rel="nofollow" target="_blank"&gt;SourceForge&lt;/a&gt;, but I'm probably going to stop publishing releases there soon because hardly anyone downloads the program from SourceForge any more.&lt;/p&gt;</description><link>https://codesnip-app.blogspot.com/2022/12/released-codesnip-v4210.html</link><author>noreply@blogger.com (Delphidabbler)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqNvrswx2nP3unfwuqYLRe__5Xf_x1O9M3c7xOfXxg-U15hTTkS7kSJnmKkDpl5jTlWDTc9jgq9j_14Zq26qXuTzNBs9RGaALtPFloimdtJ-JGlcKmOUZDB-Xb1HBhDuwE4UZ3mdE80vNk8BkqdWmAqPZ5aGH5QiMvqWGr99CSnyZpPRFbJf4-6Hfe/s72-w351-h400-c/Screenshot_20221216_110253.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-1840278263039567149</guid><pubDate>Sat, 03 Dec 2022 13:33:00 +0000</pubDate><atom:updated>2022-12-03T13:33:28.579+00:00</atom:updated><title>Never make new year's resolutions - dumping CodeSnip Belvedere</title><description>&lt;p&gt;Over 9 years I've had three attempts at creating CodeSnip 5. All have been very ambitious.&lt;/p&gt;&lt;p&gt;The latest was CodeSnip Belvedere, &lt;a href="https://codesnip-app.blogspot.com/2022/01/new-years-resolution-have-3rd-attempt.html" target="_blank"&gt;rashly announced&lt;/a&gt; on new year's day this year. Now I never normally make new year's resolutions, and I should have stuck with that tradition! Of course Belvedere foundered - it was way too ambitious. Again. I was overwhelmed right from the start. Just look at the &lt;a href="https://github.com/delphidabbler/codesnip/tree/belvedere" target="_blank"&gt;repo&lt;/a&gt; where there have been bugger all &lt;a href="https://github.com/delphidabbler/codesnip/compare/master...belvedere" target="_blank"&gt;commits&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;So here's a new announcement I can stick by: Belvedere is dead, abandoned, gone.&lt;/p&gt;&lt;p&gt;The idea to rebuild CodeSnip from the ground up was an attractive proposition, but it was way too much work. Right from the start I seemed to have an inkling I might have bitten off more than I could chew, because I even queried the wisdom of the new year's resolution in the &lt;a href="https://codesnip-app.blogspot.com/2022/01/new-years-resolution-have-3rd-attempt.html" target="_blank"&gt;announcement itself&lt;/a&gt;!&lt;/p&gt;&lt;p&gt;And that's what all the failed attempts to create the next release have in common: the plans for the new version were &lt;a href="https://github.com/delphidabbler/codesnip/blob/belvedere/README.md#original-plans-for-codesnip-5-belvedere" target="_blank"&gt;always too ambitious&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Maybe I've learned my lesson! Watch out for plan B (or C, or D, or ...). I have another cunning plan. But this time I'm going to think it through a bit more before announcing it. Maybe not on new year's day 2023 though, eh?&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXLrlkpykIYh4uzkcW-MaPsuwqceqkzOF2lxuM8RA-hcYAEIdMdsY509r5nK-LRTniDf3TO0i8w3Fil6NWK4uSs8fRqxtUEHBiHYT5fVgXEfZbyQR8Qn1u5bd_wZatZ6sK_DTjwoPONoSdRdtGxyLMsbQjDCCsOl0fN1ElcvJfXl64Aql4Aqc1NnpT/s364/belvedere-splash-query~2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="197" data-original-width="364" height="173" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXLrlkpykIYh4uzkcW-MaPsuwqceqkzOF2lxuM8RA-hcYAEIdMdsY509r5nK-LRTniDf3TO0i8w3Fil6NWK4uSs8fRqxtUEHBiHYT5fVgXEfZbyQR8Qn1u5bd_wZatZ6sK_DTjwoPONoSdRdtGxyLMsbQjDCCsOl0fN1ElcvJfXl64Aql4Aqc1NnpT/s320/belvedere-splash-query~2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;</description><link>https://codesnip-app.blogspot.com/2022/12/never-make-new-years-resolutions.html</link><author>noreply@blogger.com (Delphidabbler)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXLrlkpykIYh4uzkcW-MaPsuwqceqkzOF2lxuM8RA-hcYAEIdMdsY509r5nK-LRTniDf3TO0i8w3Fil6NWK4uSs8fRqxtUEHBiHYT5fVgXEfZbyQR8Qn1u5bd_wZatZ6sK_DTjwoPONoSdRdtGxyLMsbQjDCCsOl0fN1ElcvJfXl64Aql4Aqc1NnpT/s72-c/belvedere-splash-query~2.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-8923378301543558479</guid><pubDate>Fri, 04 Nov 2022 17:54:00 +0000</pubDate><atom:updated>2022-11-04T17:54:45.305+00:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code Snippets</category><category domain="http://www.blogger.com/atom/ns#">CodeSnip</category><category domain="http://www.blogger.com/atom/ns#">Delphi Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Pascal Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Source Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Source Code Repository</category><title>Released CodeSnip v4.20.2</title><description>&lt;p&gt;Just released&amp;nbsp;&lt;a href="https://delphidabbler.com/software/codesnip" target="_blank"&gt;CodeSnip&lt;/a&gt;&amp;nbsp;4.20.2 which is a bug fix update to CodeSnip 4.20.1.&lt;/p&gt;&lt;p&gt;It fixes a bug in the main menu of the UI. To replicate the bug:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;Drop down a main menu item.&lt;/li&gt;&lt;li&gt;Select an item on the dropped down menu using the cursor keys. Do not press enter.&lt;/li&gt;&lt;li&gt;Press F1. This raises an exception in CodeSnip prior to v4.20.2&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;This release also update Windows OS Version detection to correctly detect Version 22H2 of both Windows 10 &amp;amp; 11.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Because of the bug fix, I do suggest updating.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;As usual you can download the program from&amp;nbsp;&lt;a href="https://github.com/delphidabbler/codesnip/releases/tag/version-4.20.2" target="_blank"&gt;GitHub&lt;/a&gt;&amp;nbsp;or from&amp;nbsp;SourceForge:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/projects/codesnip/files/Release-4.20.2/codesnip-exe-4.20.2.zip/download" rel="nofollow" target="_blank"&gt;Download Standard Edition&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/projects/codesnip/files/Release-4.20.2/codesnip-portable-exe-4.20.2.zip/download" rel="nofollow" target="_blank"&gt;Download Portable Edition&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Source is available to download from both&amp;nbsp;&lt;a href="https://sourceforge.net/projects/codesnip/files/Release-4.20.2/" target="_blank"&gt;SourceForge&lt;/a&gt;&amp;nbsp;or&amp;nbsp;&lt;a href="https://github.com/delphidabbler/codesnip/releases/tag/version-4.20.2"&gt;GitHub&lt;/a&gt;. Alternatively you can fork away in the&amp;nbsp;&lt;a href="https://github.com/delphidabbler/codesnip" target="_blank"&gt;GitHub repo&lt;/a&gt;&amp;nbsp;- the &lt;span style="font-family: courier;"&gt;&lt;b&gt;master&lt;/b&gt;&lt;/span&gt; branch always contains the source of the latest release, while the &lt;span style="font-family: courier;"&gt;&lt;b&gt;develop&lt;/b&gt;&lt;/span&gt; branch has the latest development source and may not be stable.&lt;/p&gt;</description><link>https://codesnip-app.blogspot.com/2022/11/released-codesnip-v4202.html</link><author>noreply@blogger.com (Delphidabbler)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-2757553014829809124</guid><pubDate>Fri, 01 Jul 2022 16:10:00 +0000</pubDate><atom:updated>2022-11-04T17:53:36.136+00:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code Snippets</category><category domain="http://www.blogger.com/atom/ns#">CodeSnip</category><category domain="http://www.blogger.com/atom/ns#">Delphi Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Pascal Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Source Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Source Code Repository</category><title>Released CodeSnip v4.20.1</title><description>&lt;p&gt;Just released &lt;a href="https://delphidabbler.com/software/codesnip" target="_blank"&gt;CodeSnip&lt;/a&gt; 4.20.1 which is a bug fix update to CodeSnip 4.20.0.&lt;/p&gt;&lt;p&gt;It fixes a problem in the library that detects operating system version information and makes a few minor documentation changes. There are no changes to functionality.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Because of the bug fix, I do suggest updating.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;As usual you can download the program from&amp;nbsp;&lt;a href="https://github.com/delphidabbler/codesnip/releases/tag/version-4.20.1" target="_blank"&gt;GitHub&lt;/a&gt;&amp;nbsp;or from&amp;nbsp;SourceForge:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/projects/codesnip/files/Release-4.20.1/codesnip-exe-4.20.1.zip/download" rel="nofollow" target="_blank"&gt;Download Standard Edition&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/projects/codesnip/files/Release-4.20.1/codesnip-portable-exe-4.20.1.zip/download" rel="nofollow" target="_blank"&gt;Download Portable Edition&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Source is available to download from both&amp;nbsp;&lt;a href="https://sourceforge.net/projects/codesnip/files/Release-4.20.1/" target="_blank"&gt;SourceForge&lt;/a&gt;&amp;nbsp;or&amp;nbsp;&lt;a href="https://github.com/delphidabbler/codesnip/releases/tag/version-4.20.1" target="_blank"&gt;GitHub&lt;/a&gt;. Alternatively you can fork away in the&amp;nbsp;&lt;a href="https://github.com/delphidabbler/codesnip" target="_blank"&gt;GitHub repo&lt;/a&gt;&amp;nbsp;- the master branch always contains the source of the latest release, while the develop branch has the latest development source and may not be stable.&lt;/p&gt;</description><link>https://codesnip-app.blogspot.com/2022/07/released-codesnip-v4201.html</link><author>noreply@blogger.com (Delphidabbler)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-4154851155064728549</guid><pubDate>Mon, 16 May 2022 07:10:00 +0000</pubDate><atom:updated>2022-05-16T08:10:48.380+01:00</atom:updated><title>CodeSnip 4.20.0 executables now available on GitHub</title><description>&lt;p&gt;I've managed to work around the problem I had yesterday when my antivirus program prevented me from uploading files to CodeSnip's releases page on GitHub.&lt;/p&gt;&lt;p&gt;So, the executable files are now available to download from the Assets section. And how don't need to toddle over to SourceForge to get them!&lt;/p&gt;&lt;p&gt;Here's the revised &lt;a href="https://github.com/delphidabbler/codesnip/releases/tag/version-4.20.0" target="_blank"&gt;release page&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;I've updated &lt;a href="https://codesnip-app.blogspot.com/2022/05/released-codesnip-v4200.html" target="_blank"&gt;yesterday's blog post&lt;/a&gt; too.&lt;/p&gt;</description><link>https://codesnip-app.blogspot.com/2022/05/codesnip-4200-executables-now-available.html</link><author>noreply@blogger.com (Delphidabbler)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-1553444272397985781</guid><pubDate>Sun, 15 May 2022 10:36:00 +0000</pubDate><atom:updated>2022-05-15T12:45:36.491+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code Snippets</category><category domain="http://www.blogger.com/atom/ns#">CodeSnip</category><category domain="http://www.blogger.com/atom/ns#">Delphi Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Pascal Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Source Code Bank</category><category domain="http://www.blogger.com/atom/ns#">Source Code Repository</category><title>Released CodeSnip v4.20.0</title><description>&lt;p&gt;Here's the first CodeSnip update of 2022!&lt;/p&gt;&lt;p&gt;First, there's an option to delete your user database if you really want to. Why would you do this? Well there's one possible reason and that's explained in &lt;a href="https://github.com/delphidabbler/codesnip-faq/blob/master/UsingCodeSnip.md#faq-8" target="_blank"&gt;this FAQ&lt;/a&gt;.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikAdeewloZjoWL3J6Oo1XOU85IzhZ2fKPsDaEO5V4LIqNMmDshAz7eZV09ufQiVRbjf_6TFskXC4nU_IzTeN54fZQV8gk45_5BTLEkOGfiODqK-gcaPXtvKxGi9i8hIbsD6rMTDTs8cBxd9Zh_gLC-vPBPHQtYjmcdLzltrQXE5sBkZZeM5HxryJuK/s387/cs-for-blogger-4-20a.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="287" data-original-width="387" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikAdeewloZjoWL3J6Oo1XOU85IzhZ2fKPsDaEO5V4LIqNMmDshAz7eZV09ufQiVRbjf_6TFskXC4nU_IzTeN54fZQV8gk45_5BTLEkOGfiODqK-gcaPXtvKxGi9i8hIbsD6rMTDTs8cBxd9Zh_gLC-vPBPHQtYjmcdLzltrQXE5sBkZZeM5HxryJuK/s16000/cs-for-blogger-4-20a.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;The second main change is that now the size of font in the detail pane can be customised from the Display section of the Preferences dialogue box. This setting applies to all text in the pane with the exception of the source code. The size of the source code can be changed from the Syntax Highlighter section of the same dialogue box.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLVDXDf-sPM28Nt1GMhgfCz2dwUFpefERGtcelYcoiXUKLdsEGPsZO7767gx9FMP5D3HP2iNy4lDoKgIZF9rj5ckJFAh0xp2sDURuQIPe2i5SWNl7XZ8w0xbPwPBUDB9YJlvt8YuYiZ17r9CaqLvvfeMT3T_niZ9pCUVOrgcvX2N9o4mfb74D7CvrF/s627/cs-for-blogger-4-20.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="409" data-original-width="627" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLVDXDf-sPM28Nt1GMhgfCz2dwUFpefERGtcelYcoiXUKLdsEGPsZO7767gx9FMP5D3HP2iNy4lDoKgIZF9rj5ckJFAh0xp2sDURuQIPe2i5SWNl7XZ8w0xbPwPBUDB9YJlvt8YuYiZ17r9CaqLvvfeMT3T_niZ9pCUVOrgcvX2N9o4mfb74D7CvrF/s16000/cs-for-blogger-4-20.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;While we're taking about the user database, I also fixed a bug that let you try to backup or move a non-existent user database, which wasn't pretty.&lt;/p&gt;&lt;p&gt;There are a few other minor tweaks that you can read about in the&amp;nbsp;&lt;a href="https://github.com/delphidabbler/codesnip/blob/version-4.20.0/CHANGELOG.md" target="_blank"&gt;change log&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;As usual you can download the program from &lt;a href="https://github.com/delphidabbler/codesnip/releases/tag/version-4.20.0" target="_blank"&gt;GitHub&lt;/a&gt; or from&amp;nbsp;SourceForge:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/projects/codesnip/files/Release-4.20.0/codesnip-exe-4.20.0.zip/download" rel="nofollow" target="_blank"&gt;Download Standard Edition&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/projects/codesnip/files/Release-4.20.0/codesnip-portable-exe-4.20.0.zip/download" rel="nofollow" target="_blank"&gt;Download Portable Edition&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Source is available to download from both &lt;a href="https://sourceforge.net/projects/codesnip/files/Release-4.20.0/" target="_blank"&gt;SourceForge&lt;/a&gt; or &lt;a href="https://github.com/delphidabbler/codesnip/releases/tag/version-4.20.0" target="_blank"&gt;GitHub&lt;/a&gt;. Alternatively you can fork away in the&amp;nbsp;&lt;a href="https://github.com/delphidabbler/codesnip" target="_blank"&gt;GitHub repo&lt;/a&gt;&amp;nbsp;- the master branch always contains the source of the latest release, while the develop branch has the latest development source and may not be stable.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description><link>https://codesnip-app.blogspot.com/2022/05/released-codesnip-v4200.html</link><author>noreply@blogger.com (Delphidabbler)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikAdeewloZjoWL3J6Oo1XOU85IzhZ2fKPsDaEO5V4LIqNMmDshAz7eZV09ufQiVRbjf_6TFskXC4nU_IzTeN54fZQV8gk45_5BTLEkOGfiODqK-gcaPXtvKxGi9i8hIbsD6rMTDTs8cBxd9Zh_gLC-vPBPHQtYjmcdLzltrQXE5sBkZZeM5HxryJuK/s72-c/cs-for-blogger-4-20a.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-8494892842370634394</guid><pubDate>Sun, 27 Mar 2022 13:32:00 +0000</pubDate><atom:updated>2022-03-27T14:33:26.727+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CodeSnip</category><category domain="http://www.blogger.com/atom/ns#">Delphi</category><category domain="http://www.blogger.com/atom/ns#">Delphi 11 Alexandria</category><category domain="http://www.blogger.com/atom/ns#">Delphi 11 Update 1</category><title>No update to CodeSnip needed for Delphi 11.1</title><description>&lt;p&gt;As I've &lt;a href="https://delphidabbler.blogspot.com/2022/03/delphi-11-alexandria-update-1-released.html" target="_blank"&gt;blogged about elsewhere&lt;/a&gt;&amp;nbsp;the latest version of Delphi, 11.1 Alexandria has been released.&lt;/p&gt;&lt;p&gt;Normally a new Delphi release is followed by a new release of &lt;a href="https://delphidabbler.com/software/codesnip" target="_blank"&gt;CodeSnip&lt;/a&gt; that adds support for test compiling code with the new Delphi.&lt;/p&gt;&lt;p&gt;But not this time. Delphi 11.1 is actually an update to Delphi 11.0. You have to update from one to the other - they can't be installed side by side. Also the registry information CodeSnip uses to differentiate Delphi versions has not changed from Delphi 11.0 to 11.1. So there's no way to distinguish between the two. Indeed the RAD Studio's IDE still declares &lt;i&gt;RAD Studio 11&lt;/i&gt;:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZAkIUK5PzjxRPf266Kru893KfFWycp3zUYOY7YIQapcor6qoxMVFTLO1JQ1vGqB-5QBYvBDDmHarBZuCg5BVwqOFbBMoVQMKUb3Ng3_dDPcdYQG77JYJnpwQJkfRe4OdDe7e_42K7DGJa7RQ8nvJm2CgcU7MF_yqRiB8tNk68bpPa5Eqn9y5HFOZj/s1267/Delphi-11-1-IDE.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="807" data-original-width="1267" height="408" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZAkIUK5PzjxRPf266Kru893KfFWycp3zUYOY7YIQapcor6qoxMVFTLO1JQ1vGqB-5QBYvBDDmHarBZuCg5BVwqOFbBMoVQMKUb3Ng3_dDPcdYQG77JYJnpwQJkfRe4OdDe7e_42K7DGJa7RQ8nvJm2CgcU7MF_yqRiB8tNk68bpPa5Eqn9y5HFOZj/w640-h408/Delphi-11-1-IDE.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;RAD Studio 11.1 IDE&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;p&gt;What I am thinking of doing is to alter the way I describe Delphi 11 Alexandria inside to CodeSnip to read &lt;i&gt;Delphi 11.x&lt;/i&gt;. Should be straightforward. (Really wish I'd no said that!!)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description><link>https://codesnip-app.blogspot.com/2022/03/no-update-to-codesnip-needed-for-delphi.html</link><author>noreply@blogger.com (Delphidabbler)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZAkIUK5PzjxRPf266Kru893KfFWycp3zUYOY7YIQapcor6qoxMVFTLO1JQ1vGqB-5QBYvBDDmHarBZuCg5BVwqOFbBMoVQMKUb3Ng3_dDPcdYQG77JYJnpwQJkfRe4OdDe7e_42K7DGJa7RQ8nvJm2CgcU7MF_yqRiB8tNk68bpPa5Eqn9y5HFOZj/s72-w640-h408-c/Delphi-11-1-IDE.png" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-1914671868592009235</guid><pubDate>Mon, 17 Jan 2022 06:26:00 +0000</pubDate><atom:updated>2022-01-17T06:26:02.330+00:00</atom:updated><title>Back to the VCL for CodeSnip 5 Belvedere</title><description>&lt;p&gt;Well, my cunning plan to make CodeSnip 5 cross platform by using the FMX framework didn't survive contact with reality for long!&lt;/p&gt;&lt;p&gt;About as long as it took me to realise that SynEdit is a VCL component, in fact. And I really want to use SynEdit.&lt;/p&gt;&lt;p&gt;Another factor was my discovery that Delphi doesn't support GUI applications on Linux out of the box. And, yes, I know there's add on support in Delphi 11 Enterprise for GUI Linux, but that's complicating things slightly.&lt;/p&gt;&lt;p&gt;So that further scuppered my cross platform plans.&lt;/p&gt;&lt;p&gt;So CodeSnip is to remain Windows only. Ho hum.&lt;/p&gt;&lt;p&gt;I'm telling myself it doesn't matter that much because CodeSnip is mainly targeted at managing Delphi code, and the Delphi IDE is Windows only too!&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description><link>https://codesnip-app.blogspot.com/2022/01/back-to-vcl-for-codesnip-5-belvedere.html</link><author>noreply@blogger.com (Delphidabbler)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-7853902135653346522</guid><pubDate>Sat, 01 Jan 2022 14:18:00 +0000</pubDate><atom:updated>2022-01-23T04:28:32.271+00:00</atom:updated><title>New year's resolution: Have a 3rd attempt at CodeSnip v5 </title><description>&lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/a/AVvXsEiG-uQUBSmROty7zh9hU49nNAiqOAYaU9_-9MInn1Y63eEOzJQrxRt575KQ1dXpyvjVMje_5lZs8ainP16v2my6x2oN_YNp-S_tzZz0xOsvgYPyTKlVLqipRh0ISg0NPT5EY21brkjxzSE7OXY1LyT9Q_dRPboqMVQRNSjru4TjaiVK5TRw37tn3XbR=s364" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="197" data-original-width="364" src="https://blogger.googleusercontent.com/img/a/AVvXsEiG-uQUBSmROty7zh9hU49nNAiqOAYaU9_-9MInn1Y63eEOzJQrxRt575KQ1dXpyvjVMje_5lZs8ainP16v2my6x2oN_YNp-S_tzZz0xOsvgYPyTKlVLqipRh0ISg0NPT5EY21brkjxzSE7OXY1LyT9Q_dRPboqMVQRNSjru4TjaiVK5TRw37tn3XbR=s16000" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h4 style="clear: both; text-align: left;"&gt;Where have we heard this before?&lt;/h4&gt;&lt;p style="clear: both; text-align: left;"&gt;OK, it was way back in 2013 when I first decided to try to develop &lt;a href="https://delphidabbler.com/software/codesnip" target="_blank"&gt;CodeSnip&lt;/a&gt; 5 - a quite radically different version of CodeSnip than version 4. It was code named &lt;i&gt;parsnip&lt;/i&gt;, as in &lt;b&gt;pa[r]&lt;/b&gt;scal code&lt;b&gt;snip&amp;nbsp;&lt;/b&gt;- really! Along the way that morphed into CodeSnip &lt;i&gt;pagoda&lt;/i&gt;&amp;nbsp;(I can't remember why) and then floundered.&amp;nbsp;&lt;/p&gt;&lt;p style="clear: both; text-align: left;"&gt;In 2020 there was a partial reboot: &lt;i&gt;pavilion&lt;/i&gt;. This was based on &lt;i&gt;parsnip&lt;/i&gt;&amp;nbsp;and was used to investigate one of two possible ways to strip the web service code out of CodeSnip before the services closed in June. It turned out it was quicker to revise CodeSnip 4, so &lt;i&gt;pavilion&lt;/i&gt;&amp;nbsp;got abandoned too.&lt;/p&gt;&lt;h4 style="clear: both; text-align: left;"&gt;Introducing CodeSnip Belvedere&lt;/h4&gt;&lt;p style="clear: both; text-align: left;"&gt;And now, on 1st January 2022, I've just created a new &lt;i&gt;belvedere&lt;/i&gt;&amp;nbsp;branch off the &lt;a href="https://github.com/delphidabbler/codesnip/tree/version-4.19.0" target="_blank"&gt;CodeSnip 4.19.0 code tree&lt;/a&gt; to have yet another attempt at CodeSnip 5.&lt;/p&gt;&lt;h4 style="clear: both; text-align: left;"&gt;What makes me think I might succeed this time?&lt;/h4&gt;&lt;p style="clear: both; text-align: left;"&gt;Well, I think the main reason the other attempts failed is that I tried to grow v5 from the a code base that goes all the way back to CodeSnip 1 in 2005. At 16 years old the code has been bludgeoned and battered into supporting four very different versions, so it's not exactly the tidiest and most coherent code you've ever seen. And that's probably where I stumbled - that mangled code is not easy change as radically as I need to for v5.&lt;/p&gt;&lt;p style="clear: both; text-align: left;"&gt;And then there's the fact that CodeSnip 4 really doesn't like compilers after Delphi XE - see &lt;a href="https://github.com/delphidabbler/codesnip-faq/blob/master/SourceCode.md#faq-11" target="_blank"&gt;CodeSnip Compiling &amp;amp; Source Code FAQ 11&lt;/a&gt;&amp;nbsp;if you want to know why.&lt;/p&gt;&lt;p style="clear: both; text-align: left;"&gt;So for &lt;i&gt;belvedere&lt;/i&gt;&amp;nbsp;I've decided to try to start from scratch. I'm using Delphi 11 Alexandria and &lt;strike&gt;FireMonkey&lt;/strike&gt;&amp;nbsp;[EDIT: VCL see &lt;a href="https://codesnip-app.blogspot.com/2022/01/back-to-vcl-for-codesnip-5-belvedere.html" target="_blank"&gt;this post&lt;/a&gt;]. Although &lt;i&gt;belvedere&lt;/i&gt;&amp;nbsp;has all the v4.19.0 code in it, I'm not going to use it by default. I'm starting development afresh in a new &lt;span style="font-family: courier;"&gt;belvedere&lt;/span&gt; sub-directory and will only copy in the old code where it is suitable. The default position is that code will be new.&lt;/p&gt;&lt;p style="clear: both; text-align: left;"&gt;Will this approach succeed? I dunno. Progress will depend on my available time and enthusiasm.&lt;/p&gt;&lt;h4 style="clear: both; text-align: left;"&gt;New Year's Resolution - is that wise?&lt;/h4&gt;&lt;p style="clear: both; text-align: left;"&gt;Hmm. Probably not. I don't usually make them.&lt;/p&gt;&lt;p style="clear: both; text-align: left;"&gt;But this year I have made two essentially contradictory resolutions. The first is this whole CodeSnip &lt;i&gt;belvedere&lt;/i&gt;&amp;nbsp;thing and the other is to play more &lt;a href="https://www.youtube.com/channel/UCdqW4Cg7RqlgJK7MwMzU4kw" target="_blank"&gt;guitar&lt;/a&gt;. Let's see if I can manage both.&lt;/p&gt;&lt;h4 style="clear: both; text-align: left;"&gt;More info &amp;amp; have your say&lt;/h4&gt;&lt;p style="clear: both; text-align: left;"&gt;For details of what I'm planning see the new &lt;a href="https://github.com/delphidabbler/codesnip/blob/belvedere/README.md" target="_blank"&gt;README&lt;/a&gt; attached to the &lt;i&gt;belvedere&lt;/i&gt;&amp;nbsp;branch on GitHub.&lt;/p&gt;&lt;p style="clear: both; text-align: left;"&gt;If you want to suggest anything then I've set up a&amp;nbsp;&lt;a href="https://github.com/delphidabbler/codesnip/discussions/42" target="_blank"&gt;CodeSnip 5 Belvedere discussion&lt;/a&gt; on GitHub where you can do just that.&lt;/p&gt;&lt;h4 style="clear: both; text-align: left;"&gt;Progress so far&lt;/h4&gt;&lt;p style="clear: both; text-align: left;"&gt;Want to see how far I've got? About as not far as it's possible to be without actually doing nothing is how far. But, give me a chance, I only decided to do it today.&lt;/p&gt;&lt;p style="clear: both; text-align: left;"&gt;All there is so far in the&amp;nbsp;&lt;i&gt;belvedere&lt;/i&gt;&amp;nbsp;branch is a&amp;nbsp;&lt;span style="font-family: courier;"&gt;.gitgnore&lt;/span&gt;&amp;nbsp;file and&amp;nbsp;&lt;span style="font-family: courier;"&gt;README.md.&lt;/span&gt;&amp;nbsp;There's also a blank Delphi 11 project - &lt;span style="font-family: courier;"&gt;CodeSnip5.dpr&lt;/span&gt; - in the &lt;span style="font-family: courier;"&gt;belvedere/src&lt;/span&gt; directory.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/a/AVvXsEgYi7HXksj_lFt0K_xlVOQsObaBdKELxedHbg5JdeO-mGR3dVud09PWgPc0vfBhoH9Kil5Ym66uyHdz4B29I3hHNhbb8O9SRYrRYhJcfqDIAhC_incgOzOSYyvPiAtFHDIs2FFNMBe0VY1oLHJ4PovUcN7lYLsk42ofqHhuwPhHb-HnHUzIAWgJ1-MD=s445" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="340" data-original-width="445" src="https://blogger.googleusercontent.com/img/a/AVvXsEgYi7HXksj_lFt0K_xlVOQsObaBdKELxedHbg5JdeO-mGR3dVud09PWgPc0vfBhoH9Kil5Ym66uyHdz4B29I3hHNhbb8O9SRYrRYhJcfqDIAhC_incgOzOSYyvPiAtFHDIs2FFNMBe0VY1oLHJ4PovUcN7lYLsk42ofqHhuwPhHb-HnHUzIAWgJ1-MD=s16000" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="clear: both;"&gt;No forms? Nope - CodeSnip 4 uses a hierarchy of forms, which has proved to be one of the better design decisions, so I'm taking my time considering and how best to (re)design this for&amp;nbsp;&lt;i&gt;belvedere&lt;/i&gt;&amp;nbsp;before adding any forms to the project.&lt;/p&gt;Watch, as they say, this space. And now, I'm off to practise guitar.&lt;br /&gt;&lt;blockquote&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;If you celebrate it today, have a happy new year.&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description><link>https://codesnip-app.blogspot.com/2022/01/new-years-resolution-have-3rd-attempt.html</link><author>noreply@blogger.com (Delphidabbler)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/a/AVvXsEiG-uQUBSmROty7zh9hU49nNAiqOAYaU9_-9MInn1Y63eEOzJQrxRt575KQ1dXpyvjVMje_5lZs8ainP16v2my6x2oN_YNp-S_tzZz0xOsvgYPyTKlVLqipRh0ISg0NPT5EY21brkjxzSE7OXY1LyT9Q_dRPboqMVQRNSjru4TjaiVK5TRw37tn3XbR=s72-c" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4599739291943059092.post-1860355296840276353</guid><pubDate>Fri, 31 Dec 2021 21:04:00 +0000</pubDate><atom:updated>2022-01-17T06:50:44.739+00:00</atom:updated><title>Released CodeSnip 4.19.0</title><description>&lt;p&gt;Just in time for the new year, CodeSnip v4.19.0 has been released.&lt;/p&gt;&lt;p&gt;This contains the &lt;a href="https://delphidabbler.blogspot.com/2021/11/time-to-fix-some-bad-ui-design-thanks.html" target="_blank"&gt;promised re-organisation&lt;/a&gt; of the Preferences dialogue box to get rid of the confusing multi-line tabs. The dialogue box now has a list of pages in a pane on the left, with the relevant options appearing on the right.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/a/AVvXsEjgiYEGCtyATGSQJuSK253xnk0dtvXkY7-IlEIm4O3I1Nwbet2iA8q647QZ_JDevu29xSXol46SCG7-AwMUHJPvir0iBaNM6sCxGpHt5ClIkFqCDTy6_3fD1Jer4XOAHeClmGMLDfCsUApFLSl9BmJx5MRwdWwlhmyzNun_gcgyirLP8L4jlxtl3jlR=s627" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="409" data-original-width="627" src="https://blogger.googleusercontent.com/img/a/AVvXsEjgiYEGCtyATGSQJuSK253xnk0dtvXkY7-IlEIm4O3I1Nwbet2iA8q647QZ_JDevu29xSXol46SCG7-AwMUHJPvir0iBaNM6sCxGpHt5ClIkFqCDTy6_3fD1Jer4XOAHeClmGMLDfCsUApFLSl9BmJx5MRwdWwlhmyzNun_gcgyirLP8L4jlxtl3jlR=s16000" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;I've finally worked out how to make the size of the font in the overview pane's tree view customisable - it's only taken me a year to respond to this request.&lt;/p&gt;&lt;p&gt;Finally, there's a fix to an obscure bug in the legacy Code Snippets Database loader code that I doubt has ever bothered anyone - but probably would if it wasn't fixed!&lt;/p&gt;&lt;p&gt;As usual you can download the program from the delphidabbler/codesnip GitHub repo's &lt;a href="https://github.com/delphidabbler/codesnip/releases/tag/version-4.19.0" target="_blank"&gt;Releases page&lt;/a&gt; or from SourceForge:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/projects/codesnip/files/Release-4.19.0/codesnip-exe-4.19.0.zip/download" rel="nofollow" target="_blank"&gt;Download Standard Edition&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/projects/codesnip/files/Release-4.19.0/codesnip-portable-exe-4.19.0.zip/download" rel="nofollow" target="_blank"&gt;Download Portable Edition&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Source is available to download from both the above repos or you can fork away in the &lt;a href="https://github.com/delphidabbler/codesnip" target="_blank"&gt;GitHub repo&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;For a complete list of changes see the &lt;a href="https://github.com/delphidabbler/codesnip/blob/version-4.19.0/CHANGELOG.md" target="_blank"&gt;change log&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description><link>https://codesnip-app.blogspot.com/2021/12/released-codesnip-4190.html</link><author>noreply@blogger.com (Delphidabbler)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/a/AVvXsEjgiYEGCtyATGSQJuSK253xnk0dtvXkY7-IlEIm4O3I1Nwbet2iA8q647QZ_JDevu29xSXol46SCG7-AwMUHJPvir0iBaNM6sCxGpHt5ClIkFqCDTy6_3fD1Jer4XOAHeClmGMLDfCsUApFLSl9BmJx5MRwdWwlhmyzNun_gcgyirLP8L4jlxtl3jlR=s72-c" width="72"/><thr:total>0</thr:total></item></channel></rss>