A quick post on a small but hugely useful little language feature in Oxygene… if expressions.
For some years now I’ve been running a Mac as my main development system, using Parallels Desktop to run Windows in VM’s on that hardware. I like the Parallels software, but not their licensing policy, which requires me to license each machine I use rather than the “No Nonesense” approach of licensing me, the user, which I find particularly annoying now that they have switched to a subscription licensing model. But, this didn’t used to be a problem until I got a second Mac last year with a MacBook Pro for development on the go, as well as continuing to use my iMac.
Andreas Hausladen has released his latest DevExtensions and IDEFixPack for Delphi 10.2, just the latest release of fixes for things that Embarcadero should have fixed before pushing the “It’s Ready” button.
My most recent posts have prompted a bit of discussion, and it seems some concern, regarding the implementation of Boolean values in Delphi. The concern at least I think is unwarranted, as long as you avoid explicitly comparing a Boolean value to the True constant and allow the compiler to logically evaluate the Boolean itself. But in the follow up investigations of one commenter (thank you Arthur), a further occurrence of the alternate -1 identity of True has been identified: Variants.
It has been observed that the Delphi documentation states that the constants True and False have the values 1 and 0 respectively, not the -1 and 0 that the default string conversions apply. This does actually make sense but also lays a trap for the unwary.
Jaap Van Goor was asking on FaceBook about some seemingly strange behaviour when obtaining string representations of Booleans using the Delphi RTL, which led me to revisit some familiar (and some not so familiar) old Delphi ground and take a look at the area involved in further detail.
In my previous post on Anonymous Classes I erroneously referred to them as “dynamic objects” (thanks to commentors for pulling me up on that). Dynamic objects are something else entirely (although what precisely they might mean can vary on different platforms and in different languages). I have now corrected that post on this point, and also on another point that Marc Hoffman called me out on (again, thanks for that). And so the time has now come to expose the true identity of these so called “Anonymous Classes”.
There is another use case for anonymous classes, even simpler than that of providing implementations of interfaces: Anonymous POCO’s.
It seems like only 12 months ago that a lot of fuss was being made about Delphi re-entering the TIOBE Index Top 10 and now it’s done it again! Um… hang on…
With the lack of any easily available information from Embarcadero, in yesterday’s post I had to speculate as to the cost that might be involved with the new Delphi for Linux. According to comments it seems that I was being overly generous by suggesting that only a Pro Edition of Delphi would be required (so much for people who think I go out of my way to criticize). Unfortunately this does now appear to have been confirmed in the latest “amnesty” email from Embarcadero.