Performance benchmark from Delphi 2010 to Delphi XE6


Thomas Grubb from Words from a Delphi CodeSmith blog, did a fantastic job comparing performance from Delphi 2010 to XE6. His motivation around this benchmark was to validate Delphi Quality, Performance, and Stability (QPS) over the years, specially now where Embarcadero claims a lot of focus on these areas with Delphi XE6 release.

His tests include VCL, FireMonkey, Win32, Win64, Android, iOS, OSX and third party library.

The whole series is based in 12 blog posts as you can se below.

Again, congratulations Thomas for the fantastic job and time invested on that. I think everyone on the Delphi community will appreciate.

CopyReaderToClientDataSet after XE2 – Where are you?

CopyReaderToClientDataSet copies the contents of a TDBXReader into a TClientDataSet instance. It returns the same TClientDataSet instance that was passed to this method.

CopyReaderToClientDataSet is part of the Data.DBXDBReaders.TDBXDataSetReader class until Delphi/C++Builder XE2, however in XE3 it changed a little bit, it became part of a new class called Data.DBXCDSReaders.TDBXClientDataSetReader.

I got several e-mails from my blog readers that downloaded some of my examples, when compiling with latest versions they got a error message saying the CopyReaderToClientDataSet method can’t be found.

The solution is simple, add Data.DBXCDSReaders.pas as part of the uses clause and replace all the TDBXDataSetReader by TDBXClientDataSetReader, which is the new home for CopyReaderToClientDataSet.


Delphi XE5 Update 2 – many bug fixes on FireMonkey for iOS, Android and compiler

Another update available for Delphi XE5 and C++Builder XE5, the Update 2 is has lots of bug fixes covering several areas, specially on FireMonkey for Android, iOS, Windows and Mac.

The Update is available for registered users and you can find on the following links. Just a friendly remind that you need to Uninstall your current Delphi XE5 in order to install XE5 Update 2.

Below the complete list of bugs fixed on this Update.


Reference No



[Indy] Access Virolation occues on OnValidatePeerCertificate for IPPeerCommon bug[HTTPS,SSL] 3rd Party


[iOS] SOAP fails in iOS when using SSL (“IOHandler value is not valid.”) Blocker


TCameraComponent causes memory leak in Win32 Blocker


TDump command crashes on DLL’s Command Line Tools


TDump.exe shows strange output Command Line Tools


TDump crashes on the x64 shell32.dll Command Line Tools


TDump fails on some ‘foreign’ .dlls Command Line Tools
Delphi XE5 cannot build OSX applications from the command line Compiler
[FM Mac OSX 10.9] Compile error XMLDocument using SDK 10.9 Compiler, Compiler\C++


[Mavericks 10.9] C++Builder XE4 does not support OS X 10.9 Compiler, Compiler\C++, Compiler\C++\BCC
Throwing a exception in virtual member function returning an AnsiString causes an AV and an abend under certain circumstances, in 32-bit C++ application Compiler, Compiler\C++, Compiler\C++\BCC, Compiler\C++\BCC\Back End


[iOS ARM][Android] E2581 Backend error: invalid linkage type for global declaration Compiler, Compiler\Delphi
[dcc(ios/a)arm] Backend Error compiling constructor for generic classes Compiler, Compiler\Delphi


method overload resolution fails when passing @ parameter to overloaded methods mixing Pointer and specific pointer parameters. Compiler, Compiler\Delphi
ShowMessage/Message Alerts not working in iOS 7 Simulator Compiler, Compiler\Delphi
[dccaarm][dcciosarm] Implicit finally block doesn’t execute if the exception is not catch in except block. Compiler, Compiler\Delphi
Crash by declaration error when declaring class function in record type Compiler, Compiler\Delphi
Internal Error URW1154 calling TValue.From() of System.Rtti Compiler, Compiler\Delphi


Invalid section table entries on empty sections Compiler, Compiler\Delphi


subtraction of sets changes its params Compiler, Compiler\Delphi, Compiler\Delphi\CodeGen
Integer computation error upon mixing Byte and Integer Compiler, Compiler\Delphi, Compiler\Delphi\CodeGen
When Currency is used in a generic record type you get an internal compiler error G1239 IN Zephyr and G1232 in XE4 Compiler, Compiler\Delphi, Compiler\Delphi\Generics


Generic method inlining (part 2) Compiler, Compiler\Delphi, Compiler\Delphi\Generics


Cannot perform FillChar on Currency variables – E2197 Constant object cannot be passed as var parameter Compiler, Compiler\Delphi, Compiler\Delphi\Messages


Internal Error URW1136 Compiler, Compiler\Delphi, Compiler\Delphi\Messages


Totally broken package compiler for an iOS device Compiler, Compiler\Delphi, Compiler\Delphi\Packages/Libs


[dcc32] Command-line build fails for user account with non-ASCII characters Compiler, Compiler\Delphi, IDE\Build System
DataSnap : Memory leaks caused by TFDJSONDataSetsBase.FOwnsDataSet Data, Data\DataSnap
DataSnap: HTTP request may be broken when sending Delta Data, Data\DataSnap
[C++][DataSnap]Exception raised when trying to execute server method through proxy on OS X 10.9 Data, Data\DataSnap


[ISAPI] DataSnap Server as an ISAPI DLL get a 48KB limitation when receiving POST data Data, Data\DataSnap
[OS X][DataSnap][FireDAC] Unable to find static library: DataSnapFireDAC.a Data, Data\DataSnap, Data\FireDAC
[DataSnap] TX509CertificateIndy.Verify is not operation as specification. Data, Data\DBX
Unable to load libsqlib.dylib Data, Data\DBX
DBX memory leak when running queries on NEXTGEN platforms Data, Data\DBX
FireDAC FDConnection does not autocommit Data, Data\FireDAC
FDExplorer resizing causes lost display of description column message Data, Data\FireDAC
Building a Mobile Application that contains a TFDPhysIBDriverLink component raises an error Data, Data\FireDAC
[SQLite] It can’t encipher by the specified encrypt parameter, so it can’t setup except aes-256 Data, Data\FireDAC
If XML containing MBCS is saved by SaveToStream, It is not copied correctly.. Data, Data\FireDAC
If XML containing MBCS is copied to TFDMemtable, Exception class EDOMParseError occurs Data, Data\FireDAC
FireDAC memory leak when running queries on NEXTGEN platforms Data, Data\FireDAC


“Not editing” error reported with LiveBindings when calling ApplyUpdates on TAdapterBindSource Data, Data\LiveBindings


[iOS device/Android] With TSoapConnection, TClientDataset.ApplyUpdates raises “Exception in safecall method” in iOS device and Android Data, Data\Midas


[iOS device/Android] gdb reports wrong file after step into Debugger
Debugging not working with a FireMonkey Mobile app on Nexus 7 2013 Debugger
[Delphi] Access Violation when Inspecting or Adding a Watch with a function where an array is passed in as a var or const Debugger
Function call evaluation on C++ OSX apps is broken when using Mavericks Debugger, Debugger\Evaluator


[OSX 10.9] Mavericks Modules Debug Window doesn’t show framework dylibs anymore Debugger, Debugger\Views


ReqMulti.pas has been removed from the product File Delivery, Internet
[FMX/Android] TEdit causes SIGSEG if SetFocus method is called inside Forms’s OnCreate event. FireMonkey
[iOS] Sharing popup size is calculated wrong FireMonkey


Bugs in creating forms with TForm.CreateNew() – i.e. without a designer. FireMonkey
Orientation switch breaks app or bars user after device activated again (after sleep) FireMonkey


[iOS7 iPad Simulator] App crash in iOS 7 iPad Simulator FireMonkey


Bad text rendering on Android FireMonkey
Poor application performance on Nexus 10 FireMonkey
[iOS] TMemo – sometimes when using LongTap to bring up the context menu on iOS, the cursor and context menu is moved up with one line FireMonkey


[iOS Device] iOS App crashes on iOS 6.1.3 (iPad) when Showing Forms – but not on Simulator FireMonkey
TabletMasterDetail app takes over 10 seconds to load on Nexus 10 FireMonkey


When adding a TBindNavigator, an Access Violation occurs FireMonkey


2D Empty app does not start on Samsung Galaxy Tab 3 FireMonkey, FireMonkey\3D Components


TMemo.ScrollLayout could cause access violation FireMonkey, FireMonkey\Components


[iOS7] With TMemo, unintentional letter appears when entering with Japanese keyboard. FireMonkey, FireMonkey\Components
Date Picker mobile code snippet TCalendarEdit – decrements the date when you don’t change the date in the picker FireMonkey, FireMonkey\Components
Using German ß (00DF; LATIN SMALL LETTER SHARP S) in TListBoxGroupHeader raises EArgumentOutOfRangeException FireMonkey, FireMonkey\Components
On HTC one X(4.1.1) cannot be typed a set of numbers if the keyboard has the vktPhonePad type FireMonkey, FireMonkey\Components


TMemo.GoToTextEnd crashes at program startup and doesn’t move the horizontal scrollbar FireMonkey, FireMonkey\Components


TMemo.ScrollLayout could cause access violation FireMonkey, FireMonkey\Components


Mobile Code Snippets – Web Browser needs to be updated. Web Browser Top Margin should be 0 FireMonkey, FireMonkey\Components
Problem changing the KeyboardType among different TEdit FireMonkey, FireMonkey\Components


[Android 4.3] TListView component scrolling performance is very slow (Samsung GALAXY Note 3) FireMonkey, FireMonkey\Components
Listview scrolling performance slow on Samsung Galaxy Note 3 FireMonkey, FireMonkey\Components
Custom TabIcon support missing for iOS 7 FireMonkey, FireMonkey\Components


[iOS7 device] Web Browser positioned incorrectly in iOS7 FireMonkey, FireMonkey\Components


[Android, iOS] Viewport3D does not fully display on a mobile form with TabControl FireMonkey, FireMonkey\Components


[iOS] TMedia Volume cannot be changed in iOS FireMonkey, FireMonkey\Components
TWebBrowser misaligned when Align set to alClient FireMonkey, FireMonkey\Components


[Android] Edit.SetFocus in Form.OnShow() will cause app crash when entering text FireMonkey, FireMonkey\Components
TabControl does not fit the screen completely widthwise when it has exactly 6 TabItems FireMonkey, FireMonkey\Components


[Android] Performance of Delphi Apps on Google Nexus 10(Android 4.3) FireMonkey, FireMonkey\Components


[iOS] TMediaplayer pause (stop) on iOS is rewinding FireMonkey, FireMonkey\Components


[Android] Location demo on some Android devices not working FireMonkey, FireMonkey\Components
Korean input problem with Tmemo on OS X FireMonkey, FireMonkey\Components


[Android] Uppercase national characters are drawn bad on Android FireMonkey, FireMonkey\Components


[Android] password is shown on virtual keyboard FireMonkey, FireMonkey\Components
TMemo very slow on Nexus 10 FireMonkey, FireMonkey\Components


Stretched property of TText control does not work properly when TText is a child component for some other component, not a form FireMonkey, FireMonkey\Components


[iOS] TMedia Volume cannot be changed in iOS FireMonkey, FireMonkey\Components


[Android] TGestureManager crash on app close. FireMonkey, FireMonkey\Runtime
Throwing an exception and not catching it during any FMX component in an event have unexpected result FireMonkey, FireMonkey\Runtime


[iOS7] vertical touch co-ordinate is several pixels lower than the actual touch position. FireMonkey, FireMonkey\Runtime


[iOS7 device] Keyboard does not completely disappear when hidden in iOS7 FireMonkey, FireMonkey\Runtime
[NEXUS 10] SpeedButton – it takes too long until OnClick event is triggered FireMonkey, FireMonkey\Runtime


Keyboard shift/ctrl+arrow keys not working for FireMonkey objects on a form FireMonkey, IDE, IDE\FireMonkey Designer
iOS 7 apps showing iOS 6 styled native controls (pickers/keyboard) on iOS Simulator FireMonkey, PAServer
FM C++ app with Mac OS X 10.9 SDK fails to compile IDE, IDE\Build System, IDE\Deployment, PAServer


[Android] lower case of file path in deployedassets.txt IDE, IDE\Deployment
When starting RAD Studio XE5 (with android support installed) as the C++Builder personality it REMOVES the android SDK setting in the registry. IDE, IDE\General


Android apps deployed to emulator will not function, display black screen IDE, Install


Error detected (LME288), [ilink32 Error] Error: Unable to perform link Linker


Strange linker crash Linker
Throw exception crash C++ Win64 app RTL, RTL\C++, RTL\C++\Exception Handling
Wrong behavior when executing code from a catch section on Mac OS RTL, RTL\C++, RTL\C++\Exception Handling
ARC Using Unsafe objects in records are not working properly RTL, RTL\Delphi
FM application crash at init in Android devices when the language is set to Norwegian (Norsk Bokmål) RTL, RTL\Delphi


Application crash with raising exception class Segmentation fault (11) RTL, RTL\Delphi, RTL\Delphi\Other
SOAP: Double precision return values not correct for Android RTL, RTL\Delphi, SOAP


SOAP AsDateTime implementation is wrong SOAP


[Android] Segmentation fault consuming web service SOAP


C++ templates are translated as “Vorlagen” Translation

Delphi XE5 Update 1 – fixes for serious issues on ClientDataSet

Categories:C++Builder, DelphiTags: , ,

The Update 1 for Delphi XE5 and C++Builder XE5 has been released.

This update touch some areas like FireDAC, FireMonkey, Debugger, IDE and mainly ClientDataSet. Below a list of fixes related to ClientDataSet, which I consider critical errors and a blocker for anyone that was looking to migrate to XE5.

Quality Central Reference No. Summary Component/s
118951 Numeric Filters on a TClientDataSet do not filter Data, Data\Midas
119028 Linker error: TXMLTransformProvider libraries missing Data, Data\Midas
119164 Attempting to use MIDAS (eg TClientDataset) in the simulator on iOS7 fails Data, Data\Midas
119432 TClientDataSet.Locate method fails to work properly with XE5 midas.dll Data, Data\Midas
  Application stops when driver is missing Data, Data\FireDAC
  [Phys]-300 on connecting using Oracle / MSSQL / etc drivers using Arch SKU at design-time Data, Data\FireDAC


For a complete list of the specific problems fixed in this update, click here.

Download Links

You can download the update 1 installer or a new fresh ISO that includes Update 1:

That’s is, have fun.

Delphi Developers’ plan for mobile, desktop and n-tier development

Early this year I did a developer survey through my blog. I got over 1500 answers and I safely can say 87% use Delphi as their primarily development tools, the other 13% split between C#, C/C++, PHP and other languages.

Mobile Development

On the mobile development arena I asked about their company plans for mobile development in 2013, and the results are interesting:

  • On Android development, 45% will develop apps for Android, 16% maybe will do some development and 5% don’t have any plan in 2013.
  • 28% will develop apps for iOS, 24% maybe will do some development, which we can consider pretty high, and 11% don’t have any plan for iOS in 2013.
  • Windows Phone is not in a good position; only 13% will do development for Windows Phone. Looking for the Microsoft Tablet (Surface), this one is way behind.
  • BlackBerry is not the favorite platform and has only 3% of the developers considering to develop, 11% not sure yet, and 40% will not develop at all.

Survey Mobile  2013

Android is the first choice, most of Delphi Developers do business application and I see a natural choice on Android, the number of devices out there and the lower price point when compared with iPhone/iOS leads Android more in to the business application development. When we look international market iOS devices would cost at least 60% more then Android devices, different reality from iOS, where we can pay US$200 on an iPhone.

Desktop and N-Tier Development

When asked about desktop development I made three questions, which I believe it’s correlated, here the questions:

  • Is your company planning to develop new Desktop applications in 2013?
  • Is your company planning to migrate existing Desktop applications to the Web in 2013?
  • Which of the following architecture would you use for new applications?

The results showed a clear demand for desktop development, where 73% of the interviewees plans to develop new desktop applications, however when you cross that with the architectural questions, 70% would use N-Tier architecture and only 24% would consider Client/Server.

Survey 2013 - Architecture

Survey 2013 - Desktop

There is also a significant number of companies (45%) considering to migrate existing desktop applications to the web, 34% not planning and 21% didn’t decide yet. That information leads to us think about the challenges to migrate legacy applications where you can see all kinds of situation. Talking with developers I see most of the time the following scenarios:

  • High cost to migrate legacy code, which can’t be financially justifiable
  • High demand for maintenance and new projects, that doesn’t allow the team to stop or dedicate time to the migration project
  • The current application is working, no reason to change
  • And many others

Survey 2013 - Migration


Years ago the software development world moved away rom the traditional Client/Server in to the distributed development. There are so many technologies and architectures for distributed systems out there (SOA, REST, SOAP, WebServices, etc.), which are supported for many languages and IDE’s, but bring the question “Which software vendor has the best implementation and support for distributed applications?”.

Looking forward to see your comments and what’s your choice to build distributed applications?

Macs compatible with OS X Mavericks

Categories:TechnologyTags: , ,

Apple just announced OS X Mavericks and it brings some cool new features. Now come the question “Is my Mac compatible with OS X Mavericks”, below a list of Macs that will be able to run the new OS:

  • iMac (Mid-2007 or later)
  • MacBook (13-inch Aluminum, Late 2008), (13-inch, Early 2009 or later)
  • MacBook Pro (13-inch, Mid-2009 or later), (15-inch, Mid/Late 2007 or later), (17-inch, Late 2007 or later)
  • MacBook Air (Late 2008 or later)
  • Mac Mini (Early 2009 or later)
  • Mac Pro (Early 2008 or later)
  • Xserve (Early 2009)

Also, the computer needs to be running Mac OS X 10.6.7 Snow Leopard or higher, with 8GB of free disk space for installation. Essentially, that’s the exact same computer and specification requirements as Mountain Lion required—so if you installed that, you can be confident that Mavericks will run on your machine. — Apple Insider

Android Studio preview – The new Google IDE is out


Last week at Google I/O, Google announced the Android Studio, their new Android development environment based on IntelliJ IDEA.

Android Studio is FREE and can download the early preview version here. I just installed on my Mac, the IDE supports Windows and Linux as well. I played a little bit during the last 2 days and I’m very impressed.

Today’s Android development is supported in Eclipse through the ADT (Android Development Toolkit plugin), and every developer can take advantage of the Eclipse ecosystem. I have been using Eclipse for Android development, but certainly I see space for improvement and more specific features related to Android development.

Android Studio is built on top of IntelliJ’s community version and now with Google Engineer working on that, just imagine what they will be able to produce. I just played few hours with Android Studio, their source code editor ROCKS it goes beyond of features already applied in other IDEs, the Designer is awesome and gives you a view of your application not only for one device, but for many others include tablets. Also, you can easily import your projects from Eclipse in to Android Studio.

Android Studio

Android Studio multi device preview

Watch the following video and you will have a pretty good idea about what I’m talking about.

That’s it for now.

What’s new in Delphi XE4?

This time you didn’t have to way a full year to see a new Delphi release, 8 months after XE3 release Delphi XE4 is out.

iOS development is the major topic of course and bring the second version of FireMonkey to iOS, a lot of expectation on this topic specially after XE2.

Also there is a bunch of new stuffs to talk about, like:

  • New Delphi compiler for mobile platform, which brings several changes in the language and set a future path to the Delphi language, obvious these changes will affect desktop development in the future and you need to start learning about that now.
  • The SQLite and InterBase support for iOS
  • ClientDataSet available on iOS
  • Several FireMonkey changes for iOS, componentes, new classes
  • Etc..

RAD Studio XE4 now includes only Delphi, C++Builder and HTML5Builder. Delphi Prism is no longer part of RAD Studio, the name is dead and from now you have to refer to Oxygene from RemObjects. You can check the official communication from RemObjects here, where Marc Hoffman provide more details about the future related to .NET development with Oxygene (old Prism) and their support to iOS and Android development.

Trial is already available here or if you prefer download the full Delphi and C++Builder ISO here.

The Delphi XE4 documentation has a extensive list of What’s new in Delphi and C++Builder XE4, below the table of content:

That’s it for now.

Delphi XE4 official announcement coming

Categories:DelphiTags: , ,

In general you expect a new version of Delphi around August, this year is going to be different, Delphi XE4 is coming next week.

I just heard that next week Embarcadero is going to announce Delphi XE4, which is part of RAD Studio XE4 and will include C++Builder XE4 and HTML5 Builder.

An important change initiated last year related to Prism (Delphi for .NET) will affect RAD Studio this year, I think you won’t see Prism included in RAD Studio, of course REM Objects continue to develop their compiler and integration with Visual Studio, so you will have order directly from them.

What’s new in Delphi XE4?

Delphi XE4 will bring Embarcadero’s new ARM compiler and will allow Delphi developers to compile FireMonkey apps to iOS devices at this point. The project around this new compiler started years ago, I had the opportunity to talk about this project with many Delphi developers, so the new compiler is really new and a beginning that will allow to move Delphi language much easier to other platforms, as you already heard Embarcadero is already promising Android support and it suppose to come soon.

The iOS support is going to be better them what you saw in XE2 and you are expecting something way better. A very important point is the focus on iOS, trying to make everything you use for Windows available on iOS is not the way to go, so in XE4 you will see what is specific for iOS when developing for iOS and this is good.

Of course Embarcadero will promote FireDAC as a new feature in XE4, even it came recently on XE3 still a good point to talk about this, since FireDAC is way better them dbExpress. I blogged about that recently and you can read here.

I believe you will see InterBase for iOS on this release, even you already have SQLite on iOS devices I see a lot of space for InterBase on iOS, especially for developers that need protect their data on mobile devices.

Upgrade and pricing

Embarcadero will release all the SKUs and upgrade paths. Early this year they mention about to release iOS support as add-on, maybe you will be able to buy just this piece, let’s wait and see.

There is a webinar scheduled for next Wednesday April 24th and it will show this new release.

I will be back in the following days and will share my comments about this release.

I just published an article covering What’s new in Delphi XE4 after the official launch, you can find that here.

What does AnyDAC acquisition by Embarcadero mean for Delphi and C++Builder Developers?

Categories:C++Builder, DelphiTags: , ,

Finally the day has come, Embarcadero acquired AnyDAC and there is a lot to talk about, early last year I invested a lot of time evaluating AnyDAC and know you know why 🙂 – I was very impressive with the amount of features,  AnyDAC is everything dbExpress tried to be and never reached.

The reason I say that it’s because AnyDAC really allows developers to target multiples database without the workarounds required by  dbExpress, like: Field Mapping when you persist the TFields. For long time AnyDAC allowed developers that use Delphi/C++Builder Professional edition to connect their application to Enterprise databases like Oracle, SQL Server, Sybase, Informix and others, something that was only possible through Enterprise and Architect edition, and much more.

Beyond that, there is a lot of specific database features supported by AnyDAC, which I consider very helpful in any database development, here some examples per database:

  • For all databases
    • Automatic Connection Recovery
    • Unified DB Events Support
    • Simplified architecture, it means no more Query + ClientDataSet + Provider just for a bi-directional cursor
    • Much better performance when compared with dbExpress
    • TADMemTable – in memory dataset, faster than TClientDataSet
    • Much easier to migrate BDE applications to AnyDAC than the traditional dbExpress architecture
  • Oracle
    • SELECT FOR UPDATE clause – no more workaround doing UPDATE just to lock the record
    • Query execution aborting – we always need that right?
    • ROWID columns for fast data editing and refreshing
    • RETURNING clause for fast data refreshing – no more select after the update to get a new value generated by trigger
    • and more…
  • Firebird
    • RETURNING clause for fast data refreshing
    • Trusted authentication
    • DB services – backup, restore, validate, security, etc
    • Query execution aborting
  • PostgreSQL
    • Yep, now you can connect natively with PostgreSQL
    • and more…
  • SQL Server
    • Batch commands with multiple result sets – Now you can use that and improve your app performance
    • Query execution aborting
    • and more…
  • MySQL
    • AUTO_INCREMENT columns and retrieving of last inserted value.
  • Drivers for several databases on Windows, Mac and iOS

This is a small list of interesting things on AnyDAC, you can find more here.

AnyDAC is a step forward and worth the effort to migrate from dbExpress to AnyDAC, there are lot of feature needed by Delphi and C++Builder developers, many of these features has been requested for a long time and you will have when using AnyDAC.

You may ask what is going to happen with dbExpress? BDE is dead, but still around :), dbExpress is not dead and I don’t think will die soon, but there is no reason to keep two database access technology since AnyDAC is way better than dbExpress.

AnyDAC trial is available for download here.