Release Notes for XE8

From RAD Studio
Jump to: navigation, search

Go Up to What's New in Delphi and C++Builder XE8

These Release Notes contain important information that might not appear in the main product documentation. We recommend that you read this page in its entirety. For the most current version of these notes, see


Installing, Uninstalling, and Upgrading Your Product

Before you install, uninstall, or upgrade the product, read the Install.htm and License.rtf files. The Install.htm file gives the system and free space requirements, as well as installation and upgrade procedures. License.rtf is your Software License and Support agreement.

Read the most current version of the Install.htm file on the docwiki at Installation Notes for XE8.

Here are other ways to access the Install.htm file:

  • Open the file.
  • Click the Help button on the Install launcher.
  • Open Install.htm in your product installation directory; by default, this directory is:
    C:\Program Files\Embarcadero\Studio\16.0
    • For more information about installation, deployment, and licensing issues, see the Install.htm, Deploy.htm, and License.rtf files that are installed by default at C:\Program Files\Embarcadero\Studio\16.0 (on 64-bit Windows, the directory is Program Files (x86)).

General Notes

Your Product Includes Licenses for Previous Versions

Licenses for previous versions of the product are included with your XE8 license.

  • Delphi XE8 includes licenses for Delphi XE7, XE6, XE5, XE4, XE3, XE2, XE, 2010, 2009, 2007, and 7.
  • C++Builder XE8 includes licenses for C++Builder XE7, XE6, XE5, XE4, XE3, XE2, XE, 2010, 2009, 2007, and 6.

For more information about licenses, see Installation Notes for XE8 or the Install.htm file in your product installation directory.

FireMonkey Notes

Names Must Be Assigned to All Components Before Creating a New View in the Form Designer

If you open an older FireMonkey app in XE8, you might encounter the following error message:

 Cannot inherit from form 'FormName".  It contains a component with a blank name property.

The new Views Inheritance system requires that you assign a name to all components before you can create a new View in the Form Designer.

iOS App Might Not Close/Reopen Properly After Running without Debugging on the Device

If you run your iOS app on the device without debugging and then kill the process of your application on the device, you will need to run the PAServer reset command if you want to run the process outside the IDE; type 'r' at the PAServer command prompt.

Web Browser Might Not Support Some Linking Behavior on Various Platforms

On a Web page that is displayed with TWebBrowser, when you click a hyperlink with the Target property set to "_blank" or "_search", you might encounter the following issues:

  • On Android and iOS platforms, the application opens a linked page in the same TWebBrowser window.
  • On Win32 and Win64 platforms, the application opens a linked page in a new Internet Explorer window.
  • On the Mac OS X platform, clicking the links has no effect (the application cannot open the linked page).

C++Builder Notes

Restart IDE and PAServer if Mac OS X App Hangs on an OS Exception

If you debug a FireMonkey C++ OSX app that raises an OS exception, the debugger can be left in a confused state. To get debugging working again, first try to restart PAserver, and if debugging is still not working correctly, restart the IDE. See Running the Platform Assistant on a Mac and Exit (File Menu).

Resolving Multiple Declarations for DWORD or ULONG in iOS X Apps

In a multi-device application compiled for the OS X target platform, E2238 can occur because the OS X headers "iodbcunix.h" and "sqltypes.h" declare typedefs for DWORD and ULONG, and the C++Builder sysmac.h, which is included by System.hpp, also provides similar typedefs. See the workaround in the example given for E2238.

Specifying Dependent/Required Packages When Using a Component in a C++ Package

When using an existing component in a C++ package, the IDE does not automatically add the dependent (required) package for the component. You need to perform this step manually.

Without the relevant dependent (required) packages, the C++ package might fail to link because the linker cannot locate .obj files that must be initialized when that component is used. To avoid such linker errors, you need to add the component's package and its dependencies to the Requires node of your C++ package (in the Project Manager).

The following example illustrates how to determine the required packages for a component and eliminate the Unable to open 'xxx.obj linker errors by creating a dummy VCL Forms Application that uses the component.

By default, a newly-created C++ Multi-Device Application links with the .rtl and .fmx packages, as shown by the *.bpi files listed on the linker line (viewable in View > Messages):

Ilink32 command line:

 c:\BDSLoc\bin\ilink32.exe ... -aa -V5.0 -Tpe  c0wfmx32w rtl.bpi fmx.bpi memmgr.lib sysinit.obj .\Win32\Debug\Project30.obj .\Win32\Debug\Unit26.obj , .\Win32\Debug\Project30.exe , .\Win32\Debug\ , import32.lib cp32mti.lib , , Project30.res

When you add new components, the IDE calculates dependent packages and adjusts the link line. To see this, add the component you want to use in a C++ Package to the Multi-Device Form. This example uses the component TFDSchemaAdapter. Now rebuild the application. You will see that several new .bpi files have been added to the link line:

Iilink32 command line:

 c:\BDSLoc\bin\ilink32.exe ... -aa -V5.0 -Tpe  c0w32w rtl.bpi fmx.bpi FireDACCommonDriver.bpi FireDACCommon.bpi xmlrtl.bpi dbrtl.bpi FireDAC.bpi FireDACSqliteDriver.bpi memmgr.lib sysinit.obj .\Win32\Debug\Project30.obj .\Win32\Debug\Unit26.obj , .\Win32\Debug\Project30.exe , .\Win32\Debug\ , import32.lib cp32mti.lib , , Project30.res

These new .bpi files are the packages on which your component depends. In the case of TFDSchemaAdapter, the .bpi files are:

   FireDACCommonDriver.bpi FireDACCommon.bpi xmlrtl.bpi dbrtl.bpi FireDAC.bpi FireDACSqliteDriver.bpi

So to use the TFDSchemaAdapter component in a C++ Package, you need to explicitly add each one of these bpi files as 'Required' references in the IDE (see Packages).

Downloading DirectX Header Files

We only ship DirectX headers inside the Microsoft Windows Platform SDK. If you encounter errors such as "d3d.h file not found", the HPP generated for that Delphi unit contains #include <D3D*.hpp>. You can do either of the following:

  • Add a {$NOINCLUDE Winapi.D3DX9} directive to the unit that uses the D3D unit and regenerate the HPP file of that unit. The regenerated HPP will not contain the #include <Winapi.D3DX9.hpp>.
  • Download the DirectX SDK that the D3D header relies upon. You can download the DirectX SDK for free from Microsoft. For more information, see Where is the DirectX SDK? (Windows).

Events with Structs or Sets of 5-8 Bytes Are Not Valid for BCC64

Events generated by the IDE that take a struct or set that is between 5-8 bytes are valid for 32-bit C++, but not valid for 64-bit C++. This only affects cases where the type is passed by value. For cases where the type is passed by reference, there is no difference between Win32 and Win64.

For example, an Access Violation occurs when accessing the TPoint &MousePos parameter of the OnContextPopup event, because the TPoint &MousePos parameter is invalid on the Win64 platform. If you look at the __closure type declaration, you can see the difference between Win32 and Win64. Here is the __closure declaration for the PopupMenu event of TControl:

#ifndef _WIN64
typedef void __fastcall (__closure *TContextPopupEvent)(System::TObject* Sender, const System::Types::TPoint &MousePos, bool &Handled);
#else /* _WIN64 */
typedef void __fastcall (__closure *TContextPopupEvent)(System::TObject* Sender, System::Types::TPoint MousePos, bool &Handled);
#endif /* _WIN64 */

To get the code to work for both Win64 and Win32, you must #ifdef the IDE-generated handler as follows:

#ifndef _WIN64
void __fastcall TForm46::FormContextPopup(TObject *Sender, TPoint &MousePos, bool &Handled)
void __fastcall TForm46::FormContextPopup(TObject *Sender, TPoint MousePos, bool &Handled)
  ShowMessage(System::String().sprintf(L"Mouse at (%d,%d)", MousePos.X, MousePos.Y));

Delphi Notes

Android and iOS Apps Might Hang if Using AtomicCmpExchange

Delphi programs using the AtomicCmpExchange intrinsic might fail (become hung) if not compiled with optimizations turned on, and debug information turned off. The problem is that without optimization, the code-generator releases the exclusive lock unintentionally early. This bug only applies to ARM targets (Android, and iOS32 and iOS64 devices).

If necessary, you might move the functions that make these calls to a separate unit that is always compiled with the {$D-} compiler directive in its source or -$D- command-line option. In this way, debugging can proceed on the rest of the program.

IDE Notes

You Must Recreate Your iOS 9 SDK in December 2015 Subscription Update to Build C++ Applications for iOS 8

If you upgraded from RAD Studio XE8 to RAD Studio XE8 December 2015 Subscription Update, and you have previously created an iOS 9 SDK in the IDE, any C++ application that you build using that iOS 9 SDK does not work on iOS 8.

To solve this, you must remove your iOS 9 SDK from the IDE using the SDK Manager, and create a new iOS 9 SDK.

In Multi-Device Form Designer, Can Only Delete a Component from the Master View

When you try to delete a component, such as a TButton, from a different view (not the Master view), the following error message appears:

 Selection contains a component, Button1, introduced in an ancestor and cannot be deleted

The solution is to delete the component from the Master view. For more information about views, see Form Designer.

Renamed iOS Project Might Fail at Run Time or When Debugging

Renaming a project in the IDE can cause an iOS app to fail at run time and debug time. To correct the issue, do the following:

  1. Select Project > Deployment.
  2. In the Deployment Manager, click the Revert To Default speed button.

Mobile Setup Wizard Content Is Blocked on Windows Server 2008

In Windows Server 2008, Windows shows an Internet Explorer dialog box (blocking the Mobile Help Wizard content) when the Mobile Help Wizard opens. You must click the Add button (adding the content of the wizard to the whitelist of Internet Explorer) in order to see the content of the wizard.

RAD Studio displays the Mobile Setup Wizard when you are working on a mobile application and you need to follow some configuration steps, or you run into an issue and need help. (You can also select Help > Help Wizards > Mobile Help Wizard to open the Mobile Help Wizard.)

You can see the mobile setup wizard here:

Version Info Settings Inheritance

To include version information in a project targeting Windows, do not change the key values on the All Platforms target. Instead, change the values individually for each platform (32-bit and 64-bit). The targets do not inherit the values properly from the All platforms target.

Android 5.1.1. Support

The IDE includes the Android NDK version android-ndk-r9c. If you have problems with debugging an Android application on the device with Android 5.1.1, try the following:

  1. Go to Tools > Options > Environment Options > SDK Manager > Android SDK > NDK tab > gdbserver location
  2. Take note of the path in gdbserver location.
  3. Download and install the new Android NDK: android-ndk-r10e (use this link).
  4. Rename the current gdbserver file (from step 2) to gdbserver.r9c
  5. Copy the newly installed <android-ndk-r10e>\prebuilt\android-arm\gdbserver\gdbserver to the location from step 2.

Windows 10 Compatibility

If you upgrade to Windows 10 from Windows 7, 8, or 8.1, you may experience some issues with the Structure pane in C++Builder. This issue is due to a faulty install of Microsoft Visual J# Version 2.0 in the Windows system.

The workaround is to reinstall Microsoft Visual J# Version 2.0. Follow these steps:

  1. Uninstall the Microsoft Visual J# Version 2.0. This process results in an error (it is expected).
  2. Search the registry and delete all entries related to J#.
  3. Reboot the device.
  4. Install Microsoft Visual J# Version 2.0.
  5. Reboot the device.

See the Microsoft Community forum for more information: Microsoft Community - Can not install Microsoft Visual J#® 2.0 on Windows 10 (not compatible)

Database Notes

Using Run-Time Packages with C++ FireDAC DataSnap Driver

If you use the FireDAC DataSnap driver in 64-bit C++ applications built with run-time packages, you might receive an error at run time. To avoid the error, you need to add DataSnapClient to the run-time packages, following these steps:

  1. Project > Options > Packages > Runtime Packages.
  2. In the Runtime package import libraries field, add DataSnapClient to the list.

This setting resolves the problem and adds DataSnapClient.bpi to the link line rather than DataSnapClient.a.

64-bit Windows C++ Application with a FireDAC Component Might Raise Error

The following error is raised when attempting to compile an application using a single FireDAC component, when the platform is Windows x64 with static linking:

c:\program files (x86)\embarcadero\studio\<n.n>\Bin\CodeGear.Cpp.Targets : warning : Warning: Out of memory
c:\program files (x86)\embarcadero\studio\<n.n>\Bin\CodeGear.Cpp.Targets(2751,5): error MSB6006: "ilink32" exited with code 2.

The workaround is not not link FireDAC statically in Win64 C++ apps.

Workaround for INI File Errors with FireDAC

In previous versions, FireDAC created INI files in "C:\Program Files", which in modern Windows versions is read-only for regular Windows users. If you are getting errors like "Can't modify file" when adding new FireDAC connection definitions using the Data Explorer or FDExplorer, then FireDAC INI files might still be located in "C:\Program Files". To resolve the issue, you should download and run the FDFixIni utility, which relocates the FireDAC INI files to a correct location and updates the FireDAC registry. By default, the correct location is "C:\Documents and Settings\All Users\Documents\Embarcadero\Studio\FireDAC".

To resolve the issue:

  • download FDFixIni from the Registered Users site:;
  • extract the .EXE from the downloaded archive;
  • and run it. If the utility runs successfully, it will output two lines with Move [old location] to [new location].

InterBase XE7 Edition Accompanies Some Editions of RAD Studio XE8

This note pertains to users who have both an earlier version of RAD Studio (XE3-XE7) and RAD Studio XE8 installed on the same machine. In this note, the mention of RAD Studio also implicitly includes Delphi and C++Builder editions.

RAD Studio XE3, XE4, XE5, XE6 and XE7 all include InterBase XE3 Developer Edition whereas RAD Studio XE8 includes InterBase XE7. Each license suite for the versions of RAD Studio (XE3-XE7) includes a license for InterBase XE3 Developer Edition and RAD Studio XE8 includes a license for InterBase XE7. Since all these RAD Studio license suites are visible system-wide, only one license of InterBase can be used at any time.

If you happen to be running the "InterBase XE3 Developer Edition" that came with an earlier RAD Studio version (instance "gds_db", "rad_xe4", or, "rad_ibxe3"), you will not be able to start a simultaneous "developer_ibxe3" instance of InterBase XE3 Developer Edition that comes with RAD Studio (XE3-XE7) or the "gds_db" instance of InterBase XE7 that comes with RAD Studio XE8. If you try to start this, you will receive an error dialog stating "InterBase licensing error". Further inspection of the interbase.log from your "developer_ibxe3"/"dgs_db" instance will show "Registration file error: License is in use by another instance of InterBase".

For more information about running multiple instances of InterBase, see Multiple Instances section in

Workaround for InterBase XE3/XE7 Licensing Errors

  1. Stop your "gds_db", "rad_xe4", or "rad_ibxe3" InterBase instance, as the case might be, from your older RAD Studio install.
    Also, if you have set up this instance as a Windows Service, please disable it in the system Service Control Panel.
  2. Restart your RAD Studio XE8 installed copy of InterBase XE7 "gds_db" instance (or "developer_ibxe3" instance in previous versions of RAD Studio). It should now launch successfully with the proper license.

The abovementioned earlier RAD Studio versions, and applications built by them, can also work with the updated InterBase XE7 edition installed with RAD Studio XE8. Have your older RAD Studio IDE tools and applications connect to your database via TCP loopback to this InterBase instance. For example:


In the older RAD Studio IDE, you might also want to select Tools > Options > Environment Options > Environment Variables and add the following new "User overrides" entries for making local client connections.

  • Variable: IB_Protocol
    • Value: gds_db
  • Variable: InterBase
    • Value: C:\Program Files (x86)\Embarcadero\Studio\16.0\InterBaseXE7

Box2D Note

XE8 does not provide prebuilt .dcu files for the Box2D.*.pas units.

  • For Delphi projects using the Box2D.*.pas units, select Project > Options > Delphi Compiler, and update Search Path to include ${BDS)\source\FlatBox2D.
  • For more information about using Box2D, see Box2D.

FastReport Note

FastReport, the third-party report add-in, is available as a download from the Registered Users site, as follows:

After downloading, unzip the .zip file and run the FastReport installer. This installs the FastReport 4.0, FR4, and FastReport 4 exports categories of components in the Tool Palette. For more information, see FastReport in our documentation.

Upgrading from Delphi 7

If you are upgrading a project that was created in Delphi 7 or another early release, and the project has a custom file extension, you need to choose Project > Options > Application, and set the Target file extension to match the type of your project (.exe, .dll, or .bpl).

IME Note

In order to use IME (Input Method Editor) for localizing VCL or FMX apps on Windows 8 machines, you need to set a special switch to revert the IME behavior. Two important Microsoft functions, ActivateKeyboardLayout and ImmSetConversionStatus, do not work on Windows 8. For more information, see "Switch text input changed from per-thread to per-user" at

Issues Related to External Software

Issues might occur for applications debugged in an environment that includes a third-party keyboard switcher such as the Yandex Punto Switcher. If the application is closed by Windows, and an access violation is raised by the application, please ignore this access violation error.

Help Notes

Location of Installed Help

By default, the help files are installed at
C:\Program Files\Embarcadero\Studio\16.0\Help\Doc

See Also