Finally I have Innova Object DCUs for all platforms. I have been able to test on Android and the iOS Simulator. DCUs for other iOS platforms are provided but as yet are not tested. These are available for both Berlin and Seattle versions.
I started thinking about this project at the Delphi XE2 stage when support for mobile platforms were first offered. Many of my previous posts are a result of this low priority “interest” project. It was planned as a three step process.
- I felt I needed an FMX version of DUnit so any solution could be run against existing unit tests. Completed at around XE5 – XE6 “DUnit on A Mac”. This was revisited when an ADUG member started to use it on a tablet requiring some UI adjustments
- I noted that AnsiString was not supported on NextGen but Ansistrings were an integral basis of the database implementation so an Ansistring solution was required and needed to be tested against all libraries. Ansistring on an Android Device
- The last hurdle was the use of Object lifetime management using Automatic Reference Counting. If this had not been the last stage I would probably have given up. Here there were three issues.
- Objects in the original code which were created and saved as pointers just disappeared requiring a rethink of much of the database structure and the creation of specialized containers
- Object cross references integral to the structure would prevent some objects being released requiring [Weak} reference declarations to be researched and implemented which in turn resulted in objects prematurely being released in code states where the Object ownership across the link was reversed.
- The final problem was to devise a system to confirm that in fact object memory was being released because there is no
on mobile platforms and memory can be retained after dispose is called. Checking Object Lifetime with AutRefCount
Once this was resolved the process of running the Unit tests from the old Database could be run on all platforms but again these had to be modified to cope with AutoRefCount and platform differences such as file access, etc.
Berlin Implementation of Db was Delayed
The migration to Berlin had been stalled while the significant changes to allow NextGen support were completed and tested for Seattle based systems. Once this was completed and I was able to load Berlin no modifications were required to generate and test the Berlin DCUs.
Git Hub Sample
A GitHub Repository provides DCUs for various Delphi Versions and in the Sample Obj Db Project Folder is a simple example with very primitive database and forms. This project will also demonstrate client/server mode to access a shared database on Innova Solutions’ Site.
More details of the database system and alternative downloads can be obtained from my earlier post.