Embarcadero FireDAC and C++ – Good for Paradox

FireDAC is good for paradox (a leading database in it’s time and still in use in legacy applications)…..


1) Create a new VCL project

 2) on Form1 add a single TFDConnection

 3) double click on this TFDConnection

 4) Select DriveID to be “ODBC”

 5) Now in the ODBC Driver entry, can you select “MS Driver for Paradox” ?

6) Assuming you can, enter the full path to your Paradox database directory in the “Database” box

 7) close down the configuration window

 8) go to the properties of the TFDConnection

9) click on “Connected” – this will bring up a password dialog (on our test I have no password protection so just click on OK). The connected check box in the properties should now say “true”.

 10) Now you can add a TFDQuery to your form

 11) It will have the property: connection already set to your TFDConnection

 12) Double click on the TFDQuery to bring up the query editor

 13) in the SQL tab enter the following

   SELECT * FROM yourtablename

 14) click on Execute and you will see all the contents of the table.

 I have just done this with a paradox database on a Win 7 PC using C++ Builder and it all works as described.

 Note: you may want to use the connection wizard (button on the TFDConnection configuration form) as this also sets up ODBC Advanced string which has additional options that can apply to FireDAC ODBC Paradox.

 Hope this helps get you started.



Embarcadero FireDAC -10.2 Tokyo – Release 1

Embarcadero have recently released an updated to RAD Studio (C++ Builder/Delphi) called 10.2_Tokyo_-_Release_1

 What do you get in this update?

 * Delphi Linux server performance enhancements for both RAD Server and DataSnap.

* Delphi and C++ compiler and linker updates that resolve issues loading packages, especially when debugging, on Windows 10 Creators Update.

* Support for latest versions of iOS and Xcode (iOS 10.3 and XCode 8.3.2) when targeting the iOS App Store.

* FireDAC support for MSSQL 2012, 2014, 2016, and ODBC Driver 13.

* Significant C++ linker improvements pertaining to linking larger projects.

* Fixes and enhancements to the Runtime Library and VCL.

* Additional Android enhancements around control rendering and performance, and fixes for TEdit issues with Android N.

* FireDAC Support for InterBase 2017 Exclusive Isolation Level and Transaction Wait Time.

* Changes in DataSize for fields of type ftInteger and ftLongWord to avoid using the platform-dependent LongInt and LongWord type (the change affects only 64-bit Linux and 64-bit iOs platforms), and related changes for SetFieldData and GetFieldData

* Fixes for over 140 issues reported by customers in Quality Portal.

 You can get more information and the actual download links for the update at:

 Docwiki for 10.2 Release 1

So what are you waiting for? go get it !

Embarcadero FireDAC – Great Video

Embarcadero are pretty good about training webinars. These are a great way to get more out of their products. Invariably the live seminars appear on youtube after the event (although watching them on youtube means you don’t get the chance to ask questions in the live Q & A sessions at the end of the webinar).

 Here’s a link to one such particularly good webinar recording on using FireDAC, presented by Cary Jenson. Take a look !

FireDAC in Depth – by Cary Jenson

Naming Advice – A Rule

Consider this:

If you have to write a comment in your code is it because you haven’t named your variables or functions well? I very very many cases the answer is yes.

Here’s a simple example

Consider the case of a control system for a passenger lift in a tower block. You have some digital inputs in a class called DigitalInputs and this has a series of functions to get the values of the inputs wired to input pins on your hardware. Lets suppose your software wants to check if the doors of the lift are safely closed (if they are the software may then start to move the lift to a different floor).

If the door is closed limit switch is wired to pin 16 for example your code might be:

if (DigitalInputs.Pin16IsActive()) {
// … your code to start the lift moving goes here

At a later date you may think this is not particularly well written so you choose to add a comment:

if (DigitalInputs.Pin16IsActive()) /* check the door is closed */ {
// … your code to start the lift moving goes here

This is clearer than the first sample. But a much better improvement is not to add the comment but instead to rename the member function Pin16IsActive() in class DigitalInputs to a better name, for example LiftCabDoorIsClosed(). The code then becomes much more readable (without comments)

if (DigitalInputs.LiftCabDoorIsClosed()) {
// … your code to start the lift moving goes here

The big bonus is that now, everywhere this function is called throughout the code, it is clear what is being checked.

Naming rule: If you have to write a comment in your code think to yourself “is it because a variable or function is badly named?”

Embarcadero Road Map for 2017/2018

Embarcadero have just updated their published road map

As usual C++ development follows hot on the heels of the latest Delphi enhancements and, as usual, you feel “as soon as we have that, it will be really good product” !

There are lots of exciting things to come, take a look:


Embarcadero In London

PawelGlowackiInLondonJust back from the Embarcadero presentation in London, at which the principal speaker was Pawel Glowacki. The photograph shows Pawel in a characteristically friendly mood and also the venue’s bar menu! A very interesting day highlighting recent innovations in the latest Tokyo 10.2 release of RAD studio.

Small but significant improvements in the IDE (including the first tastings of “Quick Edit” of component properties (currently just VCL but FireMonkey promised for the future) were followed by an introduction complete with demonstration to AppTethering. This powerful (yet easy to implement and use) technology is also available with the new Linux Delphi compiler which was also covered in some depth.

The presentation also included the FireMonkey for Linux desktop third party application that has been developed by one of the key designers behind the original FireMonkey development. I was not the only one in the audience who was curious as to why this branch in the “Embarcadero RAD studio does everything” tree was being developed by a third party company.

The fairly intensive morning was concluded with an introduction to the power of RAD Server (previously known as Enterprise Mobility Services) including an example showing how it can be used to run specifically developed RAD server *.bpl packages.

Stephen Ball was also on hand to provide up to date information on the latest version of InterBase (InterBase 2017).

The drive behind the day was provided by the UK Embarcadero software reseller, GreyMatter. It is great to meet other enthusiastic Delphi and C++ developers and to pick up tips and development methodology from Embarcadero experts.

The First Thought Counts !

What is the difference between a good software engineer and a weaker software engineer?

Answer: When you give a weak software engineer a new job the first question they ask themselves is “how am I going to design this?” where as the good software engineer asks themselves “how am I going to test the code?”

Be aware that “job” could mean developing a new class to represent a simple concept or it could mean developing a complete database management system for a large corporation.

Working With Embarcadero C++ Tokyo

The latest version of Embarcadero C++ is Tokyo 10.2. I have installed this and all went smoothly. There are some cosmetic improvements to the menu structure over previous versions.

 The main push with this version has been the Delphi support for Linux server code development.

This move is a welcome one for many designing / building server client software systems.

 But targeting of Linux from within a C++ code base is not yet available (it soon will be !).

 What us C++ programmers do have is support for the high level CLANG compiler optimisation -O3 and also improvements to the CLANG compiler linker operation.

You can download a free C++ Builder trial here.


Embarcadero C++ Tokyo – now released!

Embarcadero C++ Tokyo

It has arrived! You can see a full list of features here


 or a summary of what’s new, here.


You can download a free Delphi trial here.


 You can download a free C++ Builder trial here.


I am going to download and install my copy this weekend……


Embarcadero C++ Tokyo

A new version of Embarcadero’s flag ship product, RAD Studio is soon coming out. It will be called Tokyo and as usual can be purchased complete, just Delphi or just C++. One of the key Embarcadero staff, Pawel Glowacki, is on the road now publicising the new features, including the support for Linux servers. Pawel’s presentation in Prague

I will have more to say about this release when it becomes available to the public, so watch this space.