The latest version of Embarcadero RAD Studio is 10.4.2. and the upgrade to this version is definitely worthwhile. The user experience of the IDE has been smoothed out / polished up significantly. It’s a joy to use!
Version 10.4.2 of Embarcadero RAD Studio 10.4.2 (and the associated versions of Delphi 10.4.2 and C++ Builder 10.4.2) was promised in the most recent Embarcadero road map for “first half of 2021”.
It looks as if it is going to be early in the first half of 2021 as a webinar promoting this new version and describing the main new features and improvements it will include is available to all on 24th February 2021.
I was asked to upgrade an old database system that used the BDE to interface to Paradox tables to FireDAC and MS Access.
The first job was to use FireDAC to read the Paradox tables and then move the code across to equivalent MS Access tables.
I ran into a problem because some of the paradox tables had the # symbol as part of their field names (for example “House#” for house numbers in an address). Another problem was use of the field name “Date” which caused problems as it was interpreted as an SQL type name.
FireDAC and the ODBC bridge to the paradox tables didn’t seem to handle these names very well. In particular it was impossible to update the field contents with new values.
My working solution was to use the TFDBatchMove, TFDBatchMoveDataSetReader and TFDBatchMoveDataSetWriter components to move the contents of the paradox tables into the equivalent tables in MS Access.
The TFDQuery used as the datasource for the TFDBatchMoveDataSetReader contained the following SQL statement:
SELECT “House#” as HouseNum, StreetName, Town, City, “Date” as DateEntered FROM ADDRESS
Notice the “House#” and the “Date” field names in the paradox table being in inverted commas and being renamed as part of the query, ready for the batch data move.
Author Joel Spolsky is a great thinker on how to write good code.
As a C++ programmer I do feel I have to take issue with his arguments against C++ exceptions. You can regard the C++ Exception as a “goto” with an unknown destination. This does sound like a recipe for a “bad smell” in your code. But C++ Exceptions are designed for handling errors that occur in a self contained part of code that can’t know what the correct way (because it depends on the time of usage) to behave when the error is encountered. By passing back an exception it allows the calling code to decide how to handle the error condition. This is an invaluable tool when used correctly. C++ Exceptions are great for solving this design challenge. But please don’t use them for anything else. Any other use immediately drifts into the problem area discussed by Joel Spolsky in his document.
I have customers who ask “When will the software be finished?”. I have more experienced customers who ask “When will the software be ready to use?”. The previous posting was heading to the conclusion that software is very very rarely actually “finished”.
You need a bit of software. So it must be doing some kind of useful task. Parts of the software may very well be useful in the future (even as part of a solution to a completely different task).
It’s a failure for all concerned if software has to be consigned to the “Recycle Bin” because it has become “so tangled and uncontrolled that it is no longer maintainable or useful” . If you are investing your time (or your money to pay for someone elses time) you want your investment to be worth while. This is achieved by taking time out to plan how to avoid “case b)” and to design according to you plans.
Do use Unit Tests. Do think about how you are going to test the overall software operation (and document this). Do refactor Do use sensible function and variable names Do keep your documentation up to date.
Never to a quick fix “because the software is basically finished”. Never think software is finished.
If you try to open this page you get automatically re-directed to https://blogs.embarcadero.com/ which is an Embarcadero authored page of useful postings with no opportunity for users to ask questions for other users to answer (in other words it is not a forum).
So where should Embarcadero C++ users go to ask questions?
Embarcadero’s answer seems to be “Stackoverflow”
As an MVP we were warned that this change may happen. I strongly discouraged Embarcadero from going in this direction, indicating that they would lose a channel that provides good feedback for them as to how well their products are performing and also provides a chance for them to demonstrate their level of technical support.
Strange: I don’t mention open source very often and now we have two blogs in a row about Embarcadero making items open source. Delphi Bold was a Delphi experiment with the Model Driven Architecture approach to programming.
Embarcadero discontinued the development of this a long time ago, but have now decided to allow access to the source code for the open source community. It will be interesting to see if anyone picks this up and runs with it! More information at the following link