Techie Italian Blogging on Delphi and More

Updated: 2017-07-21T15:00:50.436Z


Delphi Blogs of the Week #54


A new round up of news, after my two weeks of vacation around Europe.

A new round up of Delphi-related news, after my two weeks of vacation around Europe.

Delphi Product Blogs and More

Quickly find add-ons with new GetIt categories by Sarina at (by the way, we are open for ideas and suggestions, given the system is now fairly flexible)

The Enterprise Connector Beta has started by Sarina at

Viewing Salesforce Data in RAD Studio Data Explorer by Sarina at

#FireMonkey RAD Studio Overview Download Link:

Targeting Chrome OS with Delphi via Android and Linux by Jim McKeeth at

Notable Blog Posts

Send an Email with an Attachment in iOS, Android, and Windows using RAD Studio by Roy Woll at

ScannerMApp: a QR/barcode scanner app with Delphi, ZXing and TFrameStand by Andrewa Magni at

Using Google Sign-In for Firebase SDK on Android by Allen Drennan at

SIMD Assembly Optimization by Erik van Bilsen at

Building a (real) Linux daemon with Delphi - Part 1 by Paolo Rossi at

4 Years at Embarcadero Technologies by Jim at

Encode JSON to a FireDAC Memory Table without REST Request by Craig at

Stay tunes for more news.


Delphi Blogs of the (Week) Month #53


Really becoming more of a monthly post, with a summary of links, recent news, blogs, releases, etc.

Embarcadero News

Embarcadero Partners with CData to Offer Enterprise Connectors (press release at You can read more on this blog post from Sarina, The beta of the components can be found in GetIt for Tokyo customers (Professional and above), in a new "Connectors" category. You can use them to connect with over 70 different business, enterprise and social web services. Very nicely integrated with FireDAC and the IDE.

A patch for Tokyo focused on Android is available,

Books, books!

Cary Jensen has a new FireDAC book out. See the announcement at and a review by Stephen at

Dalija has a new book project focused on Delphi Memory Management, as you can read at and

Blog Posts

Visualize JSON using TTreeView at

New FireDAC Database Status Page at

Using the Google Cloud Platform APIs at http://​

FireMonkey and VCL Style Packs from at

Third Party Tools

MIDAS dropbox library at

PasLibVlc - use VideoLAN player in Delphi at

The Light End

Delphi developers use spaces, right?


RAD Studio 10.2 Patch for Android Released


Last week Embarcadero released a patch for Delphi and C++Builder 10.2 Tokyo addressing issues for Android platform support

As Sarina already mentioned in the community site, last week Embarcadero released a second patch for Delphi and C++Builder 10.2 Tokyo. The first patch was focused on tool chain issues, while this new one addresses several issues for Android platform support. Namely, some of the fixes relate with the platform changes in editing (causing problems when using the backspace key) while other address regressions (and performance issues) introduced in 10.2 Tokyo and caused by platform changes in threading support.

You can find a list of open Quality Portal issues the patch addresses in the download page at This patch is available also for trial customers.

The matching source code is available only for registered users at Notice that the source code includes changes that affect multiple platforms, but we haven't released the updated DCU files for those other platforms. In other words, PAS and DCU will most likely be out of synch either with or without the source code patch, depending on the target platform, and you should consider enabling this new source code for Android specific projects or using it as reference only.

We know this is no ideal and this patch is intended as a temporary solution, while we complete and test a full update of the product, including all internal fixes and all platforms.


Celebrating 22 Exciting Years of Innovation with Delphi


Throughout its history, Delphi has been one of the most successful development platforms as it continues to navigate a highly competitive space, maintain its essence as a robust integrative toolset, and serve a large community of passionate developers. A new marketing booklet summarizes today's product vision. Delphi was released over 22 years ago in San Francisco. More than two decades later, the Delphi design philosophy remains steadfastly the same: continual innovation and increasing productivity for developers. Throughout its history, Delphi has been one of the most successful development platforms as it continues to navigate a highly competitive space, maintain its essence as a robust integrative toolset, and serve a large community of passionate developers. Deep investments have been made in the product over the years to migrate Delphi from a Windows-centric product to a multi-device development tool supporting the five most popular operating systems: Windows, macOS, iOS, Android, and Linux. Global Reach Delphi developers can be found in virtually every corner of the world, and this is why a city moniker designates each of the 10.x versions to celebrate the diverse global reach and significant contributions that Delphi is making today. Since VCL has been the best object-oriented library Windows API wrapping for over 20 years, Seattle was chosen first (to honor the city near Microsoft headquarters). Next, the Berlin release acknowledged the strong developer community and partner network presence that Delphi has -- not only in Germany, but throughout all of Europe. Most recently, the Tokyo release recognizes the proud and growing community in Japan. Tokyo Release: Running on Linux Delphi has long had amazing support for multi-tier and server-side development on Windows. The 10.2 Tokyo release extends all of that support to the Linux operating system. This includes support for WebBroker, WebServices, DataSnap, and the new EMS modules for RAD Server. This means that many of your existing RAD Server/Windows server applications will migrate quite easily over to Linux. Only a few changes are necessary in a typical migration, thanks to the cross-platform FireDAC support. FireDAC works on both Windows and Linux to give you unparalleled access to your favorite databases.  There's more. Gather up all of your Apache or IIS modules, your REST backend services, your Windows services, or any other server-side or console application, and easily migrate those app components from Windows to Linux. New features continue to drive strong innovation If you've not taken a close look lately, it's time to reacquaint yourself with the newer release of Delphi and explore some truly amazing features. These are only a few: Live Preview - Let's say that you're designing an app, and you want to see how it looks on an iOS or Android device. As you work in the Form Designer, simply click a button to see your app in the Live Preview feature of Delphi -- in proper scale and clear definition. There's no need to plug in your device, and you can easily and repeatedly preview the app in either device format as you continue your development work. App Tethering - Maybe you've built a desktop app, and you're also building a mobile companion app. How should these apps talk to each other? App tethering makes it very easy to connect any app on any platform to an app on any other platform -- including Mac-to-Windows, Android-to-Mac, iOS-to-Windows, and so on. Parallel Programming Library - High-level, easy usable, and quick parallelization. It's the holy grail, and it's an integral part of Delphi. Desktop Bridge - Need to get your desktop app into the Windows Store? Simply rebuild, since the Windows Store is available as a build target (just like any other target). No need to mess with the tedium that you may have heard about in other development platforms[...]

Pictures from Italian Delphi Day last week


Last week I was at a large Italian conference (almost 100 Delphi developers) in my city. Here are a few pictures and comments.

Last week I was at a large Italian conference (with almost 100 Delphi developers attending) in my city. I gave a keynote on the status and future of Delphi, and there were many other sessions given by Italian Delphi developers and some international experts (including Stefan, Dmitry, and Yuriy). See the conference site for more information and the program.

I was able to meet and talk with many attendees, several of which I've known for years, but I was also happy to find some very young developers in the audience. Here there are a few pictures (some I took and some shared by Paolo Rossi and Marco Breveglieri on social media):








Nice conference. Now I have a fairly long break, I'll be back speaking in public after the summer.


The Issue with Delphi Runtime Packages and Windows 10 Creators Update


Windows 10 Creators Update changes to DLL loading affects Delphi applications that use runtime packages. Here is in update on the problems and possible solutions. Since Windows 10 Creators Update was released two months ago, we have started seeing reports of issues with runtime package (for example, RSP-17972, where myself, Embarcadero support and R&D have chimed in), mostly while debugging applications. The issue is affecting applications that use runtime packages (BPL), not applications compiled as a single executable. In general terms, the problem affects all applications that use runtime packages, built with any version of Delphi (recent, old, or even the early ones). In most cases, the slowdown for end user application is relatively limited, however applications with runtime packages on network shares are affected. But what is happening? The Core Issue: Optimized DLL Loading Let's start with some background information. On the Windows operating system, dynamic linking (DLLs) support both load-time binding and full runtime binding (LoadLibrary). In both cases, when the DLL is generated it is has a table of entry points (export table). Any other library or executable referring to it has an import table referring to functions of that export table. Since the early days, when the Delphi compiler (and linker) generate a DLL or package library (BPL) by assembling multiple units in a single binary file, and do so by making functions and methods available by creating multiple sections in the export/import table. This was likely a minor linker optimization, and never had a real side effect. Fast forward to Windows 10 Creators Update. Microsoft decided to rewrite the DLL loading code to make it parallel (different threads can load different libraries in parallel) to optimize applications loading. However this change has ended up affecting the loading of libraries with multiple sections in the export tables. Empirically, it looks like a BPL is loaded once for each segment. Now consider that most of the core Delphi BPL (rtl, vcl, fmx) have dozens and dozens of sections, and the result is libraries are loaded (and unloaded) dozens and dozens of times. Here is a screenshot of the effect in the Event log (this is a single form FMX application): While in this simple application on my machine it takes a couple of extra seconds, with larger applications having many runtime packages the effect on the debugger can be fairly extreme. Here is the full debugger log, with operations on packages (and other notable ones) marked in bold: Thread Start: Thread ID: 12052. Process Project13.exe (13088) Process Start: C:\Users\marco\Documents\Embarcadero\Studio\Projects\Win32\Debug\Project13.exe. Base Address: $00400000. Process Project13.exe (13088) Module Load: Project13.exe. Has Debug Info. Base Address: $00400000. Process Project13.exe (13088) Module Load: ntdll.dll. No Debug Info. Base Address: $76F40000. Process Project13.exe (13088) Module Load: KERNEL32.dll. No Debug Info. Base Address: $74520000. Process Project13.exe (13088) Module Unload: KERNEL32.dll. Process Project13.exe (13088) Module Load: KERNEL32.dll. No Debug Info. Base Address: $74520000. Process Project13.exe (13088) Module Load: KERNELBASE.dll. No Debug Info. Base Address: $73B80000. Process Project13.exe (13088) Thread Start: Thread ID: 14596. Process Project13.exe (13088) Thread Start: Thread ID: 2688. Process Project13.exe (13088) Thread Start: Thread ID: 2076. Process Project13.exe (13088) Module Load: rtl250.bpl. Has Debug Info. Base Address: $50050000. Process Project13.exe (13088) Module Load: rtl250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Load: rtl250.bpl. Has Debug Info. Base Address: $01740000. Process Project13.exe (13088) Module Load: rtl250.bpl. Has Debug Info. Base Address: $02170000.[...]

Speaking at the Italian Delphi Day 2017 Conference Next Week


Next Wednesday I'll give a keynote (likely in Italian) at the XVI edition of the Delphi Day conference in Piacenza, Italy

Next Wednesday, June 14th, I'll give a keynote at the Delphi Day conference in Piacenza, Italy, which is also the city where I live (short trip, for sure). This is a conference I used to organize in the past and that Paolo Rossi and Wintech Italia are continuing to put together, with a fairly impressive group of speakers, Embarcadero MVPs, present and former members of Delphi R&D team.

I'll give a keynote, probably not too technical, and I'm likley going to give it in Italian. But I'll be around the entire day, and likley also stop by the day before (some of the pre-conference seminars are very interesting!). For all information and to sign up (the conference cost is nominal, just pays for the food) see:

I hope to see a lot of Italian Delphi developers there, as usual.


Webinar Tomorrow: Understanding Automatic Reference Counting


Tomorrow I'll give a webinar on ARC memory management in Delphi

Tomorrow, June 1st, I'll give a webinar (at 3 different time slots) focused on automatic reference counting memory model in Delphi.. This is the summary:

Automatic Reference Counting is the memory management system used by Strings & Interfaces on all platforms, and all objects on Linux and Mobile. Unlike Garbage Collection, ARC is purely determisitic and keeps the developer in control. Join Delphi Product Manager Marco Cantu for this deep dive into Automatic Reference Counting.

Yuo can register for any of thr 3 times zones at

I'll do live Q&A at the end. See you onoline tomorrow.


Delphi Linux Blogs of the (Week) Month #52


It has been almost two moth from my last collection of blog posts, so I'm doubling with a Delphi Linux version (today) and a regular one (coming).

Given I haven't made one of these monthly posts in some time, I have a rather large collection of relevant blogs psots and links, and so I decided to split the blog post in two. This is focused in full on Delphi Linux, a following one will be general in scope.

Blog Posts

Creating a Linux Daemon (service) in Delphi by Craig Chapman:

Daemonizing a WebBroker Application on Linux by Craig Chapman:

Calling Linux Commands from Delphi by Craig Chapman :

Easy install SQL Server driver in Ubuntu by Luis Navarro:

Importing third-party Linux libraries on Delphi 10.2 Tokyo by Allen Drennan:

Try Delphi on Amazon Linux by Haruyuki Mohri:

Running Delphi Applications on Linux with Docker by Juan Antonio Ruzafa:

How to make Linux platform available in existent console applications:

Third Party Tools

Getting Started with FmxLinux:

Few more features on FM for Linux:

All for Now

This is all for now... hoping to get back to a more consistent schedule.


Centennial Bridge: BUILD, Creators Update, Windows 10 S and More


Some considerations on recent Microsoft announcements related with the Windows Desktop Bridge (aka Centennial Bridge), from the BUILD conference to the Windows 10 S announcement. Spoiler: RAD Studio was mentioned at the BUILD conference! As you probably know, RAD Studio 10.1 Berlin Update 2 last fall was the first IDE to offer native and direct support for the Windows Desktop Bridge (also known as Centennial Bridge). In short, using the bridge you can create Universal Windows Platform (UWP) applications that can be distributed using Microsoft Windows 10 Store. RAD Studio let's you set a few parameters and generate an APPX file ready for the store. Given I already blogged multiple times on the topic, I won't re-iterate all of the details here. There are some interesting news from Microsoft. The summary is the Desktop Bridge is considered a successful project by the company and they plan to keep pushing it as the best approach to bring existing Windows applications to the Store. Windows 10 S The first interesting announcement was "Windows 10 S". See the FAQ at This is a "safe" version of Windows 10 aimed to the consumer market and intended to allow running only applications downloaded from the Windows Store, excluding old traditional apps downloaded directly to the PC. This is potentially a huge change, although it has to be seen if Windows user will go for it. In any case, Desktop Bridge applications will be included in the support, so all of your VCL and FireMonkey applications could still be used after doing some fairly minimal migration (in most cases). Centennial at BUILD The second interesting announcement came at the BUILD conference, where Microsoft had many sessions covering the Desktop Bridge. The main one ( bring-desktop-apps-to-uwp-and-the-windows-store) focused on new features in Creators Update and general status and plans for the Centennial bridge. For example, Microsoft ahs extended the support to shell extensions, but only for out-of-process scenarios. The (Microsoft) speaker listed RAD Studio as one of the tools supporting the bridge: Notice the in the session they did demonstrate deployment of a bridge application using Visual Studio, but apparently the steps are so complex they decided to skip the actual demo -- compared to a Delphi demo of APPX generation, that takes seconds! The other part of the session I'm still a bit unclear is why you'd really need to come up with the complex architecture below, when in most cases a native application (like one built in Delphi) can leverage most of the WinRT APIs like notifications in a much more simple way. While having two applications inter-operating makes sense in some cases, in most it seems fairly overkill. The Business Store The other relevant initiative related with the Desktop Bridge is the ability for larger companies to create their own "business store", again using APPX applications. In other words, the same binary you could upload to the public store you can also provide to a company for internal distribution. This makes sense for specific applications, includes license tracking, and because a simpler way to install and update an application on a large number of systems. The same applies to education institutions. More information at Again, most Win32 and Win64 applications built with RAD Studio should be ready to be converted to the new format, and our IDE can help in the process. [...]