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.
It has been difficult to avoid the fuss being made about the “new” Linux support in Delphi. It’s almost as if they didn’t have a Linux offering more than 15 years ago. I refer of course to Kylix, which failed in no small part due to the quality and the cost of the tool, for a platform where “free” was the more usual expectation and open source means being able to fix your own tools instead of waiting for the vendor to deign to offer a maintenance release. So what better chance does a Delphi with Linux support stand this time around ? Let’s see…
A few years ago (2011 to be precise) someone asked a question on StackOverflow about support for anonymous classes in Delphi. The reason for the question was that the poster was trying to use Delphi to develop for Android and on that platform the widespread use of callback interfaces makes anonymous classes highly desirable.
In my previous post I provided a simple example of how to use Retrofit to define, create and use a REST API client. Even in that simple example the issue of how to deal with different responses to a request came up. That is, where the response we receive does not conform to the strongly typed response we expected (or hoped for). Here’s how we deal with that, in a strongly typed way.