Category Archives: General

For stuff I forget to categorise! Doh!

InterBase XE7 – Update 4

InterBase XE7 – Update 4

InterBase XE7 update 4 is now available for general release.

For notes on previous InterBase XE7 updates please select the links below

What’s new / updated in InterBase XE7 – Update 4?

In short. nothing new, just a few speed improvements and general fixes over update 3. Update 4:

  • Improve performance in a few specific query use cases,
  • Fixes a bug in IBConsole where databases may be created as dialect 1 rather than 3
  • Improves the partial backup feature.
  • Resolves a licensing lock issue on Windows 2012.

The resolved defects are documented on the InterBase XE7 DocWiki resolved defects page .

Downloading InterBase XE7 update 4

Embarcadero CodeCentral “Registered Users” can download the patch binaries (Server/Desktop/Developer/Trial) for Windows and Linux, and, ToGo Edition. You can find the downloads at

For new users, the trial and developer editions are available for free at

New Eddystone beacon format from Google

Google Eddystone™ beacon format

Give your users better location and proximity experiences by providing a strong context signal for their devices in the form of Bluetooth low energy (BLE) beacons with Eddystone™, the open beacon format from Google.

I found out today about a new Bluetooth LE beacon format that google have released called Eddystone.

This makes 3 formats for beacons along side AltBeacons and iBeacons.

The Eddystone format, like AltBeacons, is an open beacon format but allows the inclusion of additional data blobs with the beacon that can be updated once the beacons are deployed. A key part of this vision from Google is an integrated cloud based API’s that Google may well hope puts them at the centre of the growing beacon ecosystem.

Continue reading New Eddystone beacon format from Google

InterBase XE7 – Update 3

InterBase XE7 – Update 3

InterBase XE7 update 3 is now available for general release.

What’s new in InterBase XE7 – Update 3?

In my post about InterBase XE7 Update 2 I mentioned about the new reserve words that are used by Change Views and how to work with reserved words by using “quotes”.


With update 3, InterBase XE7 only adds these words to the reserved list once Change Views are active in the database. This will make it easier for users to migrate to InterBase XE7 and take advantage of the other cool features like partial data dumps, improved index handling etc.

What’s fixed in InterBase XE7 update 3?

The resolved defects are documented on the InterBase XE7 DocWiki resolved defects page .


Downloading InterBase XE7 update 3

Embarcadero CodeCentral “Registered Users” can download the patch binaries (Server/Desktop/Developer/Trial) for Windows and Linux, and, ToGo Edition. You can find the downloads at

For new users, the trial and developer editions are available for free at

Using Generics & RTTI to get enum string name or enum value


This blog post looks at Enums and how multi-platform generics and RTTI (or what C# guys call reflection) make this really simple using common code on Windows, Mac OS X, iOS and Android using Delphi.

Starting with what an Enum is, the post then explores how you would traditionally have seen it written in code, before looking at the clean X-platform approach RTTI and Generics provide.

If your experienced in working with enums and want to find out how RTTI makes it easier, you may want to skip the first part of this post and get to the section about RTTI further down.

Enumerated Types to and from strings

An Enum, or Enumerated Type is a data type with a set of named values.

Enums are a great way to define a set of constants that are specific for a type and work with them in context, ensuring only one, or an array of allowed values is set.

OK, I’m going to use an example that maybe should have more values listed, but you get the point. It is the points of a compass – North, South, East or West.

  TCompass = (North, South, East, West);

  D : TCompass; // short version for Direction 
  D := TCompass.North;
  case D of 
    North : ShowMessage('North');
    South : ShowMessage('South');
    East  : ShowMessage('East');
    West  : ShowMessage('West');
    raise Exception.Create('Unknown Direction');

This provides one way to convert a Enum to a string using a case statement, but every time you make a change to your Enum types, you need to add in extra code… Call me lazy, but thats too much work!

Continue reading Using Generics & RTTI to get enum string name or enum value

Important InterBase XE 7 – Update 2

InterBase XE7 – update 2

InterBase XE7 update 2 is now available for Windows and Linux server and ToGo. This update is highly recommended for all users of InterBase XE7.

For what is new and resolved issues in InterBase XE7 Update 2, please see the online InterBase documentation. – but in short, following update 1 with some change view enhancements – update 2 contains a number of fixes to general bugs reported.

Working with reserved words.

A list of Known Issues is available in the documentation. One that I will highlight is the addition of CHANGE, CHANGED, INSERTED, UPDATED and DELETED as reserved words in InterBase XE7 due to the introduction of Change Views.

I have heard of a few cases where developers have SQL statements that have stopped workings because their tables have fields that are one of the reserved words, e.g. UPDATED; Its easily to ensure those keep working by putting field names in “quotes” in your SQL statement.

As we know a lot of developers don’t quote their field names, we are working towards either a hot-fix or an update for the future that will only work with these as reserved words IF Change Views are being used, however it is recommended that you add “quotes” to the fields in your SQL if you are at all in doubt.


For registered users, you can find the patch downloads at

Server Edition



ToGo & IBLite Edition

Registered Users Downloads

Developer edition and Trial


What to do with Beacons before you code?

A beacon is a Bluetooth Low Energy device including some information in its advertising data.

Working with beacons requires code to read the beacons and some setup to ensure you read only the right beacons, especially as more and more are appearing! This article mainly focuses on the latter and what you should be aware of before you deploy your beacons.

Continue reading What to do with Beacons before you code?

Database updates in RAD Studio XE8

Database updates in RAD Studio XE8

With RAD Studio XE8 there have been a number of database updates to expand connectivity, and improve and introduce functionality for us programmers.

FireDAC & IBX support for Change Views

FireDAC has introduced new support for Change Views – enabling rapid identification of what has changed on the server side data and updating of client side stored data. See this <2min video for how these work.

Source code for the example ships in the samples directory:

<Samples><language>Database\FireDAC\Samples\DBMS Specific\InterBase\ChangeView

IBX has also introduced new components to make it easier to work with change views and subscriptions.

 New Platform – Teradata

FireDAC now includes support for Teradata, using the driver name TData.

TeraData in FireDAC


An example of how to set the driver properties is shown on the docwiki help for connecting to Teradata with Delphi.


TDataSet TField speed up.

Marco Cantu mentioned on the Launch webinar Q&A a customer was claiming seen a speed up of around 25% on a TClientDataSet application due to the refactoring at the base of how TField is used at the core layer. 🙂 This is really cool for both VCL and also FMX developers.

64bit support for iOS

With the new platform for iOS 64bit, the database layer is also seamlessly available, just recompile and run 🙂

Other updates

There are updates for EMS including push notification. EMS is a great way to access central data from mobile devices. EMS now is updated to include InterBase XE7 for both the server and ToGo side, allowing you to use Change Views on both Server and Clients.

Where FireDAC uses SQLite, it has been updated to a newer driver.

For more of whats new in RAD Studio XE8, including EMS updates, please click here Whats new in Delphi XE8 and C++ Builder XE8


RAD Studio XE8 & my first Google Play app

RAD Studio XE8 has been launched today with a host of new features for both mobile and desktop applications.

Discover How RAD Studio XE8 Expands Your Business

For more on whats new visit RAD Studio XE8 documentation

My Google Play app built with XE8

I have been playing with a new application that combines my hobby as a Basketball referee with my geeky side and have published using RAD Studio XE8 a new Google Play store application for managing Basketball Shot Clocks.

I started this app using components that was introduced in XE7 – AppTethering and Multi-View, and these have been great, but I have benefited recently from the new FireUI updates in building a version for multiple screens. I now have it running on Tablets, Phones and Android TV. (which is kind of fun).

Adding in XE8 “toys”


Getting to XE8 was trivial from XE7, and my next step now is to add in the new Analytics features of XE8. AppAnalytics provides developers with a visual representation of how users are interacting with applications built with RAD Studio XE8

I’ve found you get some good analytics about platform and country etc from Google App Store, which is cool, but I want some in app details to know when its being used. – This is especially cool as this can be used in VCL and FireMonkey applications and there is a free version of the service with the option to purchase enhanced online analytics.

More Native Controls

I’m also going to look to increase the native controls used in the app with the new options for a number of the controls I have used (like the slider and list view). I like the way FireMonkey abstracts this as an option and even surfaces some new options in this area.

For more about the new controls and everything else that is new in XE8 please visit the online help documentation.