Skip to content

Developer Skill Sprints for Q3 2015 - The programming fun starts Tuesday, July 14, 2015

Q3 2015 - Developer Skill Sprints: Code, Test, Version Control, Deployment and More

This latest season of Developer Skill Sprints focuses on programming tips and techniques most requested by attendees of the past 72 skill sprints we’ve already presented. This quarter we’ll take your developer skills to an even higher level and also get you ready for the release of Windows 10.

Live sessions every Tuesday

July 14 - September 29, 2015
6AM San Francisco / 9AM New York / 2PM London / 3PM Milan / 1300 UTC
11AM San Francisco / 2PM New York / 7PM London / 8PM Milan / 1800 UTC
5PM San Francisco / Wed 9AM Tokyo / Wed 10AM Sydney / 0000 UTC Wednesday

Register for the series at


  • 14-Jul Using the New Native HTTP Client Libraries
  • 21-Jul Using Azure Translator Services for Automatic Text Translation
  • 28-Jul Using InterBase Events and Change Views with Callback Functions
  • 4-Aug TestInsight – integrated RAD Studio IDE Unit Testing Made Simple
  • 11-Aug Taking Beacons to the Next Level
  • 18-Aug Using Dependency Injection for Maintainable Code
  • 25-Aug IDE Integrated Project Source Code Control using Subversion, Mercurial and Git
  • 1-Sep Cool Dynamic Programming Tips with the Enhanced RTTI
  • 8-Sep App to Store: Build and Publish to iOS App Store and Google Play
  • 15-Sep Best Skill Sprint Yet! Register Now
  • 22-Sep Delphi Anonymous Methods and C++ Lambdas – when to use them and not use them
  • 29-Sep Effective LiveBindings from Forms to Code

Save your seat: register now at

Previous Developer Skill Sprint replays can be found on the Embarcadero YouTube channel playlist at


Delphi VCL and FireMonkey: eBooks, Books, Tutorials and Courseware - a collection of links

We are often asked where developers and teachers can find books, courseware and tutorials available today that cover Delphi programming and Multi-Device FireMonkey app development. The great news is that there are more and more books appearing on Amazon, Lulu and online. Here is my latest list of books, courseware and tutorials from book shopping sites and developer sites.  




Tutorial and Learning Websites


If you know of other books, eBooks and tutorials, post a comment to this blog post and send me an email ( with the information and links and I will keep updating my list.


How to vibrate iOS and Android phones using FireMonkey and XE8

Pawel Glowacki asked about how to vibrate a smartphone from Delphi code for iOS and Android. The following sample code for Delphi and FireMonkey was provided by Thierry Laborde and Williamm Wittwer from Embarcadero France:

unit Umain;


  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.StdCtrls

  libAudioToolbox        = '/System/Library/Frameworks/AudioToolbox.framework/AudioToolbox';
  kSystemSoundID_vibrate = $FFF;

Procedure AudioServicesPlaySystemSound( inSystemSoundID: integer ); Cdecl; External libAudioToolbox Name _PU + 'AudioServicesPlaySystemSound';

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    { Déclarations privées }
    { Déclarations publiques }

  Form1: TForm1;


{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
  Vibrator:=TJVibrator.Wrap((SharedActivityContext.getSystemService(TJContext.JavaClass.VIBRATOR_SERVICE) as ILocalObject).GetObjectID);
  // Vibrate for 500 milliseconds
  AudioServicesPlaySystemSound( kSystemSoundID_vibrate );


Notes: For the iOS part you have to go in the SDK Manager, choose the SDK for iOS and click on the button to add a Path. And parameter it like in the join picture. Don’t forget after to click on the button ‘Update Local File Cache. For the Android part don’t forget to add the authorization for Vibration in the parameter of the project.

RAD Studio XE8, XCode 6.4 and iOS 8.4 - it’s safe to go in the water!

Shark Week 2015 starts on the Discovery Channel this Sunday. This week, Apple released updated Xcode (Xcode 6.4) and iOS (8.4) to support the Apple Music launch (along with other improvements and bug fixes). Within 2 minutes of the release, I got an email from several developers asking if it was safe to install these updates and use them with RAD Studio XE8. Our R&D teams have been using and testing the beta releases of iOS 8.4 and Xcode 6.4 for awhile, but we always wait to do final testing on the actual release (we’ve been surprised a couple of times with changes that appeared between beta and release).

We’ve tested the IDE, PAServer, Delphi and C++Builder compilers, runtime library, debugging, app distribution, device integration, using the simulator, and building/running mobile sample applications. Several of our field software consultants have also tested these latest Apple releases with their computers and devices.

After final testing by our teams, I can officially report that it is safe to use Xcode 6.4 and iOS 8.4 with RAD Studio XE8. It’s safe to go in the water, but keep a lookout for any shark reports in your area. Let us know if you find any issues. You can use the Embarcadero Quality Portal to report problems.






Deploying your EMS server applications for scalability and security

Yesterday I wrote about some of the RAD Studio XE8 secure computing capabilities that are supported in the product features and technologies. Robert posted a comment asking whether the EMS Console app was secure as it was using HTTP for development and debugging. This is true.  I asked our EMS R&D team members. I was reminded that when you deploy your EMS server applications they run under Microsoft IIS using an included ISAPI.DLL that works with your EMS application package files. The tools that come with the deployment including the console app and browser interface also work inside an HTTPS environment.  Security is assured as long as you configure your IIS Server correctly.

Information in our DocWiki for EMS application deployment says: "For a production environment, we recommend to set up the EMS Server and the EMS Console Server on a web server. We currently support Microsoft IIS Server." The tools you need are included as DLL versions in the RAD Studio XE8 (enterprise edition and above). You’ll find the DLL versions in the "C:\Program Files (x86)\Embarcadero\Studio\16.0\bin folder". Additional developer and packaging information is also included in the DocWiki - If you have created one or more packages of custom EMS resources, you must build them into package shared library files, which you need as well.

EMS Development gives you executables for the EMS server and console apps. These you can test and debug inside your own secure environment. For development we give you 5 user licenses. When you want to deploy your EMS based applications, contact our sales office or reselling partners to get your deployment licenses.

For the two main EMS deployment DLLs you’ll need to configure IIS to know where they located, This is documented in the "Configuring IIS for the ISAPI DLL topic". The EMS DLLs are: :

  • emsserver.dll, for example C:\inetpub\wwwroot\emsserver\emsserver.dll
  • emsconsole.dll, for example C:\inetpub\wwwroot\emsconsole\emsconsole.dll

Additional information about setting up a secure IIS installation is provided by Microsoft including the following links:

How To Set Up an HTTPS Service in IIS -

How to Set Up SSL on IIS 7 -

How to implement SSL in IIS -

IIS7 : HOW TO configure a website for HTTPS? -

Thanks, Robert, for the comment/question on my secure computing in RAD Studio XE8 Security blog post.




The RAD Studio XE8 Summer (Northern Hemisphere) and Winter (Southern Hemisphere) of Security!

The RAD Studio XE8 Summer (Northern Hemisphere) and Winter (Southern Hemisphere) of Security!The RAD Studio XE8 Summer/Winter of Security!

This blog post contains information and links covering secure development topics for Delphi, C++Builder and RAD Studio XE8 developers. You’ll find secure computing introductory topics and starting information for InterBase database, components, libraries, Backend as a Service (BaaS), Cloud, App Tethering and more. Throughout the Summer (or Winter if you live in the Southern Hemisphere), I’ll continue writing about secure topics and showing sample development projects. If you have specific secure development needs, send an email to

Interbase – security at the database, column and over-the-wire levels.

InterBase® XE7 is a full-featured, high performance, encryptable, multiplatform and scalable relational database for developers who are looking to embed a low-cost, zero admin, lightweight secure database into their cross platform connected applications. With InterBase XE7 you get powerful access control, data change management, disaster recovery and journaling, as well as support for popular database drivers for increased deployment flexibility.

Data security is a hot topic! The loss of data via cyber attacks can lead to loss of customers and reputation, lead to regulatory action, and even expose you to large fines. InterBase is here to help with its flexible on-disk and over the wire encryption capabilities. InterBase also benefits from inbuilt user authentication and security in place wherever your data files reside. Choose to encrypt the entire database or just a critical table or column, and define who can decode that data with powerful role based authentication. InterBase supports both Advanced Encryption Standard (AES) and Data Encryption Standard (DES) encryption.

InterBase Encryption is supported starting with InterBase 2009. InterBase enables you to encrypt information at one or both of the following levels:

  • Database Level Encryption (InterBase encrypts all of the database pages that contain user information).
  • Column Level Encryption (Column-level encryption is more flexible and specific).

Using InterBase Database Encryption you can also encrypt Database Backup Files. For more information about encrypting your data with InterBase, see Data Definition Guide

Security is provided in the InterBase Server, InterBase Desktop and InterBase ToGo editons. To see additional features of each InterBase edition go to the InterBase product editions page at

Additional links and videos about InterBase database encryption can be found at:

Rise to the Data Security Challenge: Creating Secure Database Applications using InterBase – OnDemand Webinar -

Why Database Encryption Matters: Is the NSA reading this? 



EMS (Enterprise Mobility Services) offers a Mobile Enterprise Application Platform (MEAP) that you can host in the Cloud or on the premises, to expose custom REST APIs and enterprise database data. The enterprise data access is provided by the FireDAC data access library.

EMS offers a comprehensive solution including REST API, remote database access, users tracking, and analytics. Compared to a do-it-yourself model, in EMS you have a pre-build server with core capabilities in which you can plug custom packages.

You can create custom packages to expose datasets and plain REST resources, and easily embed the client code to access those resources in mobile and desktop applications.

EMS Server Authorization allows you to authorize or deny access to a EMS Resource or a particular EMS Endpoint in an HTTP request. The authorization depends on the credentials used in the HTTP request to the EMS Server.

EMS allows you to use external credentials in your custom plugins to execute login and signup operations in the EMS Server. 



DataSnap is a RAD Studio XE8 technology for Delphi and C++Builder that allows the development of multi-tier applications, most notably multi-tier database applications. DataSnap offers the possibility to create Client-Server applications that communicate through the Internet, the local network, or the local host.

The main feature of DataSnap is the ability of the Client application to invoke methods that are implemented on a Server. DataSnap automatically generates the necessary interface for the Client to communicate with the Server, containing the prototypes of the Server methods.

DataSnap provides a way for the Client to safely communicate with the Server, using a secured transfer of JSON (JavaScript Object Notation) data content over TCP/IP, HTTP and HTTPS. The ability to define filters at both ends of the communication channel, for encryption and compression purposes, improves the security.

DataSnap provides Encyption filter support for data sent. You can choose PC1 or RSA - In case of using the PC1 encryption filter, the Properties property holds the Key value to use for the encryption. If using the RSA filter, the Properties property holds a list of three properties, UseGlobalKey, KeyLength, and KeyExponent.

Start with the DataSnap Server Wizard. DataSnap Server Wizard provides an easy way to implement a server application using the DataSnap technology. Regardless of the options you select, it creates a ServerContainerUnit that contains a TDSServer component. All the additional components are connected to the TDSServer, having the Server property set to the name of the TDSServer component. If the selected protocol is TCP/IP, the server unit also contains a TDSTCPServerTransport. If HTTP is selected as the communication protocol, the server unit contains a TDSHTTPService component. If HTTPS is selected, then the server unit will contain a TDSHTTPService component configured for HTTPS operations.

Additional DataSnap documentation pages:


Cloud Application Development

Building cloud based applications also involves security, authentication, storage and more.  RAD Studio XE8 provides several interfaces to cloud systems using the Cloud API runtime libraries with support for Amazon AWS and Microsoft Azure.

We also provide component interface for Backend as a Service (BaaS) providers Parse, Kinvey, App42 (a separate free download). These BaaS services provide their own secure interfaces for developers for user and device authentication, storage and push notifications.  You can find additional information on their sites.

Sarina Dupont has a series of blog and tutorial posts showing you how to use BaaS providers. Use the following community blog post and tags to find the articles:


App Tethering

The RTL provides app tethering components, giving your applications the ability to interact with other applications running either on the same machine or on a remote machine.

Using app tethering, your applications can easily:

The app tethering feature does not depend on a specific transport or protocol, and new transports and protocols can be implemented using the app tethering API. The RTL provides built-in support for IP and Classic Bluetooth connections. IP support includes connecting applications running on the same device.

You’ll find a wide range of App Tethering documentation and tutorials on the Embarcadero DocWiki:




RAD Studio XE8 supports using the Native HTTP libraries on multiple devices.,

You can also use OpenSSL with your secure applications.,


TurboPower LockBox

TurboPower LockBox 2 (Win32, Win64, Android, OSX) and LockBox 3.5.2 (Windows, Android, OSX) cryptography libraries/components. You can download and install the latest releases for RAD Studio XE8 using GetIt  (Tools | GetIt) menu item in the IDE:


Secure C Library

The foremost reason why Secure C Library came into existence was the need for bounds checking for string handling functions in the C Library. There are many functions in the C Library that expect the caller to supply string parameters long enough to hold the result of the operations. When a larger string is written "over" a smaller string, in fact data is written past the end, overwriting other program data. This can lead to "mysterious" failures, as the program has no means of knowing if or when something went wrong.

A typical solution was to try to use strings that were "big enough" but this could lead to two problems: either the result was a waste of space, or the user’s "big enough" was not big enough in practice. In addition, buffer overflows can be exploited in order to run harmful code, compromising the security of operating systems and networks.

For many C Run-time Library functions, the Secure C Library introduces extra parameters that are used for bounds checking of character arrays, and data is never written past the end of an array. Besides that, it introduces run-time constraints and the means for the user to set his own run-time violation handling functions. Doing so, the program can know when and where something goes wrong with a character array and can fix the error, or fail gracefully.


Windows CryptoAPI

You can always call Windows SDK functionality even if we have not wrapped the API in our RTL or components. Here is the Microsoft SDK URL for CryptoAPI –

Cryptography -

Cryptography API -


IP*Works! By /n software

Internet components that are provided as part of the RAD Studio XE8 Registered User Downloads.

The full version of /n software’s IP*Works components - A comprehensive suite of components for Internet communications including more than 40 individual components covering every major Internet Protocol. IP*Works! eliminates the complexity of Internet development, providing easy-to-use, programmable components that facilitate tasks such as sending email, transferring files, managing networks, browsing the web, and consuming web services.

You can then purchase their addon packs for SSL, SSH and more at

Registered user download links:


Project Indy Internet Components

Project Indy includes a range of components for RAD Studio XE8 supporting a wide range of Internet protocols, clients, servers and more. You can find additional information on our DocWiki about the components and how to secure Indy based network connections:


I will be covering additional RAD Studio XE8 secure development topics throughout the summer. Stay tuned for demos and articles on the above topics as well as secure development for REST, SOAP and other web based architectures.

Have a great Summer or Winter depending on which hemisphere you live it :D


RAD Studio XE8 runs on the latest Windows 10 Insider Preview Build 10158

RAD Studio XE8 (Original Release and Subscription Update 1 versions) runs on the latest Windows 10 Insider Preview Build 10158. The Update/Install, on my MacBook Pro running Parallels for the Mac Desktop, took a while, at least 15 minutes time (but I did not run a clock as I was working on other computers at the same time).  There were several reboots in the process. So, you’ll want to “Sit back and relax” according to the Microsoft Upgrading Windows screen.

I tested the already installed RAD Studio XE8, the IDE launches without a problem. I built "One Button" apps for VCL and FMX, ran without a problem. I tried a few sample of the sample apps and used the Windows 10 style – all good too. InterBase XE7 64-bit developer server– runs as a service with no issues.

I used GetIt (Tools | GetIt) to download the Delphi Windows RT library. Grabbed Marco’s sample app from his dropbox link. Build the sample – Notification works.  Note: Microsoft has renamed the "Notification Center" as the “Action Center” even though when you hover over the toolbar icon – it still reports “New Notifications Available”. Read Marco’s blog post at for additonal information and the link to the sample app (

A final note - in Windows 10 build 10158, Microsoft Edge now has a graphically stylized lower case “e” for its icon on the toolbar :D


The question is: Will the latest Xcode (6.3.2) work with Delphi XE8 Update 1?

I received an email just now from another David, saying "I haven’t found this information on your website…The question is: Will the latest Xcode (6.3.2) work with Delphi XE8 Update 1?". I have installed RAD Studio XE8 Subscription Update 1, installed the updated PAServer on my Mac to match the IDE, and I have Xcode version 6.3.2 running on my Mac. I am running iOS 8.3 on my iPhone 6 and iPad Air 2. To answer David (I also replied to his email): All is good with my development, testing and deployment of iOS and OSX apps.

Here are the screen grabs of my about boxes for both tools:

RAD Studio XE8 Subscription Update 1 about box

Xcode 6.3.2 about box

My guidance to developers is always, when you learn that there is a platform update, stay tuned to our blogs and wait until you hear from us that it is safe to go in the water before installing updates to the underlying platforms and devices we are using and targeting.  We give general platform version guidance at "Supported Target Platforms" pages (and links to specific target platforms) at

I will work with our team to create a single spot where we can always update the version number dependencies and support we have, especially given that the platform vendors are making impactful changes these days even in what would normally be considered minor updates.  Stay tuned for a permanent URL.


What’s new and fixed in RAD Studio, Delphi and C++Builder XE8 Subscription Update 1

Two articles on our DocWiki and Community site provide the details about what is new and fixed in the recently released RAD Studio, Delphi and C++Builder XE8 Subscription Update 1. The update is available via the registered user downloads are (both in ISO and Web install versions). You can tell if you have Update Subscription by using the Help | License Manager menu item.  Select your registered XE8 release and look in the center panel of the License Manager window and you will see the following text - "Is Subscription: Yes" .

For my RAD Studio XE8 original release, my License Manager displays the following (serial # edited out):

Title:  RAD Studio XE8 Architect Named User
License file name:  .8216_52.1427845488219.slip
Trial license:  No
License Expiration Date:  3/1/2016
Days Left:  256
Is Subscription: Yes
Subscription Expiration Date: xx/xx/xxxx
License Type:  Workstation
Serial number:  xxxx-xxxxxx-xxxxxx-xxxx
Registered:  Yes
Platform:  Windows
Commercial use:  Yes

Before you install XE8 Subscription Update 1, you need to uninstall the original XE8 release. You can choose to keep your registry settings so that your known packages and IDE settings will be kept when you do the update 1 install.

What’s new in Delphi and C++Builder XE8 Subscription Update 1 -

Subscription Update 1 Fix List for RAD Studio XE8, Delphi XE8, and C++ Builder XE8 -

Thirty Years working with these programming tools - Today, June 17, 2015

Eating a wonderful cake this afternoon in Scotts Valley to celebrate my 30 years working with developers and these development tools. So many memories and so much fun programming, building tools, visiting with customers and working with the great teams here at Embarcadero Technologies. The apps we can build today are so far beyond what we could do back when I started at Borland. I met Philippe Kahn at Comdex Las Vegas, November 1983 where he gave me 8" CPM/80 and 5.25" PC-DOS copies of Turbo Pascal version 1.0. I immediately popped the DOS disk into my IBM PC and was hooked. After a job interview on Philipe’s sailboat in Monterey Bay in the Spring of 1985, I was offered a job at Borland and started on Monday, June 17, 1985.

Thank you so much PK for that start. Thank you to the tens of thousands of employees and alumni that I have had the priviledge to work with here in Scotts Valley and around the world. Thank you to Wayne Williams and Michael Swindell for continuing to allow me to help our customers.

I am still having so much fun, still learning how to program for new platforms and devices, still writing code after all these years. I am loving it every day.

Huge hugs, thanks and much love to my wife Martha and our three girls Gina, Molly and Emily for allowing me to have this job and this much fun!

The technical fun and innovation never stops! It’s amazing what our developers are working on for the future. My advice for a long, happy programming career? Keep writing code every day and enjoy every minute of life with your family, friends and computers :D


Bad Behavior has blocked 4 access attempts in the last 7 days.