Convenient list to decide what to put in your version control system: Delphi File Extensions – Delphi Programming.
–jeroen
Posted by jpluimers on 2014/12/10
Convenient list to decide what to put in your version control system: Delphi File Extensions – Delphi Programming.
–jeroen
Posted in Delphi, Delphi 1, Delphi 2, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 3, Delphi 4, Delphi 5, Delphi 6, Delphi 7, Delphi 8, Delphi x64, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Development, Software Development | Leave a Comment »
Posted by jpluimers on 2014/12/01
After speaking on EKON 2014 and ItDevCon 2014, the last month has been extremely busy on both the work and family side of things.
So it took longer to write my review of the Delphi Cookbook by Daniele Teti, Packt publishing (ISBN 978-1783559586).
Before the review, first two ways to see for yourself if you’d like the book:
Daniele Teti has a Table of Contents on the page where he introduced his book, but that ToC is a bit poorly formatted, so I included a better formatted one below.
Some other reviews of the Delphi Cookbook also make an interesting read (I read them after writing my own):
Before the review a disclaimer. I bought the eBook version before Packt publishing asked for reviewers. They sent me a paper copy for free (which somehow took 2 weeks to arrive). I read about 25% of the book before the two European Delphi conferences, and the rest over the last two weeks.

I’ll try to keep this to the point, as too much detail would be killing. And I’m not writing a book here (:
So lets start with what I like:
I want to stress the last: Daniele Teti did an excellent job on this.
When writing a book or teaching material, it is hard to strike balances between the kinds and diversity of topics, the depth and order of the topics, and choosing between what to cover and how to cover it.
The way the chapters a built together with a variety of interesting topics per chapter, a great mix of chapters, and the various topics building (but not too much relying) on previously covered topics is really great. The whole book shows that Daniele is a great teacher. Well done.
Then a few things I dislike:
The dislikes are minor compared to the likes, so here is the…
I didn’t buy the book by accident: knowing the presentation and teaching style of Daniele, I was expecting a nice mix of topics explained in a light and fun way. The book surpassed those expectations by far.
So any Delphi programmer should buy this book. If not for using right now, then for getting some ideas, and reading the various topics later.
Below some suggested combinations for using this book various Delphi audiences.
Buy this book. It gets you inspired, even if only some of the topics are suited for real beginners. Then get the books below, read them and get back to the Delphi Cookbook for more inspiration:
Buy this book. Consider buying Coding in Delphi by Nick Hodges.
Also read Coding in Delphi by Nick Hodges.
I know few people that master all Delphi topics well (I’m not one of them: especially on the mobile side I’ve still a lot to learn). Even for gurus, I think this is a nice book, especially considering the price.
–jeroen
Synchronizing shared resources with TMonitor
Talking with the main thread using a thread-safe queue
Synchronizing multiple threads using TEvent
Displaying a measure on a 2D graph like an oscilloscope
–eof–
Posted in Delphi, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Development, Software Development | 5 Comments »
Posted by jpluimers on 2014/12/01
Every vendor should publish version numbers like this to make it easier for their customers to check if they are current or not.
I can’t promise to have a complete list, or the latest versions, but I will update with the versions I have used.
–jeroen
Posted in Conference Topics, Conferences, Delphi, Delphi XE, Delphi XE2, Development, Event, Software Development | 8 Comments »
Posted by jpluimers on 2014/11/26
A long while ago, I posted a detailed answer on what functions the default comparers actually were calling to get a feel for if they would apply or not answering delphi – What does the default TArray.Sort comparator actually do and when would you use it? – Stack Overflow.
I needed that information recently because of some sorting issues I bumped into (sorting generic records), so finally a blog post.
First some links to documentation for even more background information:
There is the answer I gave: Read the rest of this entry »
Posted in Algorithms, Ansi, Delphi, Delphi 2009, Delphi 2010, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Development, Encoding, Floating point handling, Software Development, Unicode | 2 Comments »
Posted by jpluimers on 2014/11/25
Using Delphi build-events (see my post Delphi prebuild/prelink/postbuild events), you can automate the process of signing your Delphi executables with a digital certificate.
Below the steps for signing Windows executables.
Prerequisites:
Posted in Delphi, Delphi 2007, Delphi 2009, Delphi 2010, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Development, Software Development | 3 Comments »
Posted by jpluimers on 2014/11/20
Please someone add the Software on a String blog to DelphiFeeds (:
Great article on testing implementations of interfaces in a generic way. With examples in NUnit and DUnit.
How do I test an interface? Should I even do that? | Software on a String.
And then Stefan Glienke made a great comment at https://plus.google.com/u/0/+MarjanVenema/posts/Dgb8WADLwXZ making the DUnit implementation even easier:
But even if you go without that extra base class the cool thing is that you don’t need to restrict your classes to be a TInterfacedObject but specify the interface they need to implement (yay, compiletime type safety) and then you can get rid of the Supports call and directly assign the result of the ctor call to the sut variable.
–jeroen
Stefan’s code:
Posted in Delphi, Delphi 2007, Delphi 2010, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Development, Software Development | Leave a Comment »
Posted by jpluimers on 2014/11/20
Ever since the Delphi build engine got changed to MS Build in Delphi 2007, many people use Delphi build events. Their order is prebuild, prelink and postbuild (or maybe better spelled pre-build, pre-link and post-build).
Before Delphi 2007, you had to fiddler with project groups and dependencies to fake pre-build and post-build events. For an example see Pre and Post-Build Automation in Delphi.
One of the really good things about these events is that build events appear in the output tab of the messages window.
One of the really bad things is that there is hardly any documentation about the build events.
At least two important things are missing:
Let’s explain these. Read the rest of this entry »
Posted in Conference Topics, Conferences, Delphi, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Development, Event, FastMM, QC, Software Development | 5 Comments »
Posted by jpluimers on 2014/11/19
A while ago I bumped into a funny problem with Delphi XE.
I moved all the code from the .dpr in a Main unit (the IDE sometimes overwrites part of the DPR).
This normally isn’t a problem, until Delphi re-generates the .RES file. The reason is that this .RES file can contain a manifest which enables Windows theming.
If there is no reference of the Application object in the .DPR, the IDE will remove the Theming manifest from the .RES file, so your application run unthemed.
Three solutions: Read the rest of this entry »
Posted in Delphi, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Development, Software Development | 6 Comments »
Posted by jpluimers on 2014/11/13
Steve Maughan posted a great question on G+ last week:
The resulting thread is full of people answering with their favorite JVCL and JCL gems.
Recommended reading!
–jeroen
via JCL & JVCL – What are the Real Gems in these Tool Sets I’ve just installed JCL….
Posted in Delphi, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi x64, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Development, Software Development | 1 Comment »
Posted by jpluimers on 2014/11/13
A while ago, I wrote a via PowerShell script to show the component packages (BPL) files for all installed Delphi (actually: BDS) versions (now at List-Delphi-Installed-Packages.ps1) for a couple of reasons:
Note that in the mean time (I queued this blog entry somewhere in 2013) the script has moved to BitBucket, I’ve written more scripts (like Dependencies.bat which is documented in Dependencies.md and Run-Dependend-rsvars-From-Path.bat), all modified all scripts to support all BDS versions I had access to, and a write nice conference paper on Build Automation for Delphi that references the scripts.
Since none of the machines were using pre BDS installations, I could limit the script to BDS 1.0 and up.
The very first (1.0) version of BDS (also known as the Gailileo IDE foundation) was in fact not a Delphi version, but C# Builder 1.0. All Delphi versions since then are based on BDS. The script is based on the BDS registry keys I researched and wrote about in Files in your Delphi settings directory; How to relocate the Favourites on your Welcome page.
Since registry access can be very much flow based, the pipeline architecture of PowerShell is a good fit.
So I wrote a PowerShell script (:
Note Thomas Mueller has written a batch file around the same set of registry keys; the thread there also has some insight in the HKLM versus HKCU keys.
I will explain my script step by step, and start with the most important one: Set-StrictMode -Version Latest. Read the rest of this entry »
Posted in CommandLine, Delphi, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 8, Delphi x64, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Development, PowerShell, Software Development | Leave a Comment »