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 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:


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.


Problem solving

I have “lost” a lot of time recently getting to the bottom of a particular problem with my code. The code in question was written using Embarcadero C++ and used the FireDAC database interface to read and write to MS Access tables. The bug was in the way I was configuring the FireDAC system, but this is of little importance to what I want to talk about; my advice here applies to any problem solving (it’s not even specifically tied to programming).

 To solve a problem try to apply the following principles.

 1) Understand the problem. Make sure you dig below the symptoms to focus on the actual problem. Often this is much more difficult to do than you would first think. Many of the following points are actually ways to help achieve this.

 2) Isolate the problem ( narrow it down ) to as small and simple case as is possible. Strip away any code that might influence what is going on to home in on the “guilty” feature. In many cases doing this suddenly creates a “working” version. If it doesn’t then you can end up with a small segment which contains the problem and which is easy to analyse and easy to modify and test.

3) Design tests which will yield more information. Before you run a test consider what you are trying to prove and what different sets of results you might get. Know what each set of results will imply or disprove. Be ready for “unexpected” results.

 4) Read the manuals! Make sure you really understand what you read. It is surprisingly hard to write concise and accurate yet easy to understand technical manuals. Get to know your manuals and how well they are written. Manuals that are good should be read very carefully. Manuals that are less suspect need to be read with a “detectives mind” so that you really understand what is going on.

 5) Take a step back. Is there something unrelated to your line of enquiry going on? (Some might argue that this is a restatement of item 1).

 6) Sleep on it! I don’t pretend to be a psychiatrist but there is no doubt that good ideas for problem solving happen overnight. An early night is a much more valuable approach than working through into the small hours.

 7) Don’t work under pressure. If you have a deadline approaching remind yourself that you won’t get results any quicker any other way than working slowly, methodically and systematically. If you have a boss applying pressure then keep him/her up to date with what you are doing to work through the issue and explain that this will yield a result and that patience is required. Be careful not to create your own stress. Go for a walk up a hill (or whatever you do to relax as long as it is away from your computer screen) and come back to the problem refreshed.

 8) Believe in yourself but be aware that some problems are tricky and take time to solve.

 9) Don’t be afraid to ask for help. If you have a colleague talk the problem through with them. Just the act of explaining a particular challenge can make you think of a new way of looking at it or a new possible cause.



Welcome to my [Roger’s] blog where I plan to share useful snippets of programming advice along with other tips that will help fellow programmer’s to design and write good code.

 There will be a bias towards C++ since that is my language of choice. But many principles will apply to programming in general.

 I am a member of the Embarcadero C++ Most Valued Professional scheme.