Show: Delphi C++
Display Preferences

Release Notes for XE3

From RAD Studio XE3
Jump to: navigation, search

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

Also see: Release Notes for C++Builder 64-Bit Windows

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, and 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 XE3.

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 it is:
    C:\Program Files\Embarcadero\RAD Studio\x.x

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\RAD Studio\x.x (64-bit Windows uses the Program Files (x86) directory).

General Notes

Your Product Includes Licenses for Previous Versions

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

  • Delphi XE3 includes licenses for Delphi XE2, XE, 2010, 2009, 2007 and 7.
  • C++Builder XE3 includes licenses for C++Builder XE2, XE, 2010, 2009, 2007 and 6.
  • RAD Studio XE3 includes the earlier version licenses listed in the previous items.

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

Changes in Support for iOS Development

  • The FireMonkey iOS development tools are supported in XE2 only. Owners of XE3 have the right to download, install, and use the XE2 product.

Adding DLLs, dylibs, or Packages that are Required as Dependencies

If a project A (either an executable or a dll/dylib/package) depends on another project B, you must deploy the dependencies for project B along with project A. For example, in an OS X application, required .dylibs might be libcgcrt.dylib, bplrtl160.dylib, or other Embarcadero .dylibs. To manually add files to a deployment, use the Deployment Manager to inspect B's deployment, and add those dlls/dylibs/packages to A's deployment, along with the final output of B.

Do not install extraneous files in \bin directories

Embarcadero does not allow any unsigned third-party DLLs to be placed in the product bin directories:

  • $(BDS)\bin
  • $(BDS)\bin64

A license validation error will occur.

The Problem of Invalid Platform

If your system has an unknown platform value set (for example, as a preset system variable %Platform%), the following error message is displayed:

Invalid PLATFORM variable "(value)". PLATFORM must be one of the following: "Win32", "Win64", or "OSX32".

If PLATFORM is defined by your system's environment, it must be overridden in the RAD Studio IDE or passed explicitly on the command line to MSBuild; for example, /p:Platform=Win32.

Debugging WebSnap and WebBroker Using WebAppDebugger

To debug WebSnap and WebBroker applications using the WebAppDebugger, start by running serverinfo.exe, which silently registers itself. This step is required to use the Web Application Debugger (WebAppDbg.exe, located in the \bin folder of your installation directory).

IDE Support for Unicode Characters Outside the Basic Multilingual Plane

Windows® Vista®, Windows® 7, and future OS's correctly display the font for any language. On XP operating systems, however, the font that the IDE uses (Tahoma, which ships with English versions of the operating system) does not support the display of characters outside the basic multilingual plane. Characters that use surrogate pairs will not display correctly in some parts of the IDE including the Object Inspector.

To enable correct display, install supplemental language support into Windows using Regional and Language Options in the Windows control panel. For more information, see

Component Developer Notes

Registry Keys for Component Installers

If you are a VCL component vendor and your component installer updates paths in the registry to include paths to your components, there is an additional registry key your installer should update in HKEY_LOCAL_MACHINE\Software\Embarcadero\BDS\x.x\Globals.

Add (or update if it already exists) a string value called ForceEnvOptionsUpdate. Assign it a string value of "1". When this registry key has a value of "1", the next time the IDE runs, it updates the EnvOptions.proj file on disk to include the path(s) that your installer added. The EnvOptions.proj file is the mechanism by which the new MSBuild build engine in the IDE is able to include paths that are listed on the Library - Win32 page in the IDE's Tools>Options dialog.

If your installer updates any of the following registry keys, it should also add or update the Globals\ForceEnvOptionsUpdate key:

  • Software\Embarcadero\BDS\x.x\Library\Browsing Path
  • Software\Embarcadero\BDS\x.x\Library\Debug DCU Path
  • Software\Embarcadero\BDS\x.x\Library\Namespace Search Path
  • Software\Embarcadero\BDS\x.x\Library\Package DCP Output
  • Software\Embarcadero\BDS\x.x\Library\Package DPL Output
  • Software\Embarcadero\BDS\x.x\Library\Search Path

Making Your Components Available at Design Time and Run Time

Following are the two ways the IDE decides whether or not a component is available for Win32/Win64/OSX32. (Here "available" means appearing on the Tool Palette, and checked by the IDE. The IDE does not do any compile-time checking other than the component unit's existence.) Both methods rely on data embedded in the Win32 run-time (or design+run-time) package that implements the components. The IDE cannot load Win64 and OSX32 packages in the IDE, so the IDE must defer to the Win32 package for information.

  • The RAD Studio build system automatically embeds an RC_DATA resource in the Win32 package binary named PLATFORMTARGETS, which is a bitmask of the pidXXX constants in System.Classes.pas and reflects the package project's targeted platforms. The IDE reads this when the package is loaded and uses it to decide, for example, whether or not to disable the component(s) in the palette when an unsupported platform is active.
    To target multiple platforms with a component package implies a contract between the component developer and the IDE. The IDE assumes that if a component package project targets multiple platforms and the developer distributes the Win32 run-time package to customers (and all the associated compilable and linkable files), the developer will also distribute all the necessary compilable, linkable, and run-time bits for the other targeted platforms as well.
  • Individual components can use the ComponentPlatformsAttribute class attribute to override the data in PLATFORMTARGETS, using a bitmask of the same constants in Classes. For example:
        [ComponentPlatformsAttribute(pidWin32 or pidWin64)] // not supported on OSX
        TMyComponent = class(TComponent)

    Use of this attribute implies the same contract as described in the first bulleted item.

Unit Scope Names for Your Own Components

Unit scope names were new in the XE2 release. In general, component writers do not need to provide a unit scope name for their components because the added uses entry is automatically scoped. However, if you create your own components, you can add unit scope names in new and existing projects by following the steps below. You can also remove the unit scope names if the names are no longer needed.

  1. Locate the Registry key HKEY_CURRENT_USER\Software\Embarcadero\BDS\10.0\Library\libname, where libname is your supported target platform (one of Win32, Win64, or OSX32).
  2. In the Library directory for your supported target platform (libname), create the following key:
  3. Add a string value:
    • Value Name = vendorname, where vendorname is the name of your component development enterprise
    • Value Data = unitscopenames, where unit scope names are delimited by semicolons
For example, this Registry entry adds three compatibility unit scope names (NewComp, OldComp, and MyComp) for the vendor MyComponentCompany:

The help topic Adding Unit Scope Names for Your Own Components describes another less-safe workaround that affects every project regardless of state.

Third Party Add-In Notes

Some Third Party Add-Ins Support Cross-Platform Development

Support by third party add-ins for cross-platform development is summarized at: Third Parties' Cross-Platform Support.

OS X Platform Is Selectable but Not Supported for IntraWeb

If you create either a Delphi or a C++ IntraWeb application, you can select the OS X platform in the Target Platforms node in the Project Manager, but IntraWeb does not support development for the OS X platform.

FastReport Notes

Package Loading Error after Uninstalling FastReport

If you uninstall FastReport (outside of the product installer), you might see an error such as:

Can't load package C:\Program Files (x86)\FastReports\LibD17\dclfs17.bpl or dclfsDB17.bpl.
The specified module could not be found.
Do you want to attempt to load this package the next time a project is loaded?

In this case, you should respond No.

XE3 Features

If you are using FastReport with RAD Studio XE3, be aware of the following issues:

  • FastReport supports only VCL applications, and does not support OS X. If you create a FireMonkey HD application, the FastScript, FastReport 4.0, or FastReport 4 exports tab might be available, but you will not be able to compile the application because of error 1026 File not found: 'Dialogs.dcu'.
  • FastReport supports Win64 application development, but the following Win64 FastReport components might be disabled on the Tool Palette:
    • All the items in FastScript section
    • FastReport 4.0 | TfrxCheckBoxObject
    • FastReport 4.0 | TfrxGZipCompressor
    • FastReport 4.0 | TfrxCrypt
    • FR4 tools | TfrxDocSite
    • FR4 tools | TfrxTBPanel
    • FR4 tools | TfrxRuler
    • FR4 tools | TfrxScrollBox
    • FastReport 4 exports | TfrxBMPExport
    • FastReport 4 exports | TfrxJPEGExport
    • FastReport 4 exports | TfrxTIFFExport
    • FastReport 4 exports | TfrxGIFExport The workaround is to create a Win32 project, add these items on the application's form, and then add the Win64 platform to the project. Then you can successfully compile the project for Win64.

Windows 7 and Windows Vista Notes

Install With Admin Privileges

In Windows Vista, you must run the installer while logged on as a user with administrative privileges, because changes to the Program Files directory require elevated security.

Restart the Registration Client

The registration client occasionally fails on Windows Vista. To work around this problem, select Allow this program when the Windows Live OneCare Firewall appears, then exit and restart registration. Do not select Block this program, because doing so prevents you from registering afterward.

Default bpl Folder for x64 Output Is Not Created by the Installer

The default bpl output folder for x64 packages is a subdirectory of the x86 folder. The product installer creates the x86 BPL folder, but it does not create the x64 subfolder. This means that in order to compile Win64 packaged, you need to have administrator privileges under Windows 7.

Debug Requires Admin Privileges

On Vista with UAC enabled, if an executable file name includes "setup", "update", or "install", you cannot debug the program unless the IDE is started under the System Administrator account. Trying to run executable files that include these strings outside of the IDE triggers a "User Account Control" dialog requesting the password for the System Administrator account. Running within the IDE without debugging raises an error indicating the program requires privilege elevation. Running within the IDE with debugging raises a process creation error. For more information, see

TAnimate Requires TShellResources

If you use the TAnimate component in Vista or in Windows 7, you must also add the component TShellResources (in the Win32 tab of the Tool Palette) to your project. Adding TShellResources adds the following resources:

  • FindFolder.res
  • FindFile.res
  • FindComputer.res
  • CopyFiles.res
  • CopyFile.res
  • RecycleFile.res
  • EmptyRecycle.res
  • DeleteFile.res

Reconfigure BDE (deprecated)

If you are still using the deprecated BDE on Windows Vista or Windows 7, you need to reconfigure BDE so that it does not attempt to write files to the C:\<root> directory. Log on as an administrator and run BDEAdmin.exe, located at Program Files\Common Files\Borland Shared\BDE. Under Native, click PARADOX, and change NET DIR to point to a location other than the root directory. A suggested target is C:\Users\Public\Documents\RAD Studio.

Manifest Problem

The computer might restart when you add a manifest that has the Windows Vista extension to an .exe file or to a .dll file in Windows XP Service Pack 2 (SP2). For more information on this problem and the hotfix, see

Selecting Pre-Vista Dialogs

If you rebuild an existing VCL application that includes common dialog components and run it on a Vista system, it uses Vista file and task dialogs rather than traditional open, save, and message dialogs. If this is not desired, set the global variable UseLatestCommonDialogs false at the beginning of a program to force the original behavior.

IntraWeb on Vista

To run and debug VCL for the Web (IntraWeb) applications, you should use Windows 2003 or Windows XP. If you are using Windows Vista, you must turn off User Access Control (UAC) when debugging VCL for the Web applications. For more information about IntraWeb, including help for VCL for the Web components, see

WinHelp is Not Supported

Windows Vista and Windows 7 do not support the deprecated WinHelp help viewer (WinHelp.exe). You should migrate your help system to HtmlHelp. If you want to try to use .HLP files, add the WinHelp32.exe viewer to the uses list of any unit included in the application, and download the WinHelp32 viewer from the Microsoft website

AppWave Notes

When AppWave is running, and RAD Studio has been launched (but closed), there are errors when writing the file associations during RAD Studio installation.

Delphi Notes

Compiling Large Project Groups Might Fail due to Out-of-Memory Errors

One way to recover from this problem is to close the project group, reopen it in the Project Manager, right-click the "failing" project in the group, and choose From Here | Build on the context menu. Compilation should succeed for the remaining projects.

If the project is composed of .exe files (not packages), another workaround is to enable and build with run-time packages. To do this:

  1. Go to Project > Options > Runtime Packages.
  2. Enable Link with runtime packages.
  3. Click the field for Runtime packages and then click the ellipsis [...] that appears.
  4. In Runtime packages, add rtl to the Runtime packages list:
    1. Enter rtl in the center field.
    2. Click Add.
  5. Click OK.

Fusion VM Requires Setting Default Project Directory

In a Fusion VM with document sharing turned on, you might receive the following error when you compile:

[dcc32 Fatal Error] Project1.dpr(5): F1026 File not found: 'Unit1.dcu'

The workaround is to open Tools > Options > Environment Options and set the field Default Project to your document directory with "Rad Studio\Projects" appended. For example, C:\Users\testuser\Documents\RAD Studio\Projects.

.hpp Header Files

Starting with XE, and continuing with XE3, the Delphi compiler outputs .hpp header files by default. This is a change from pre-XE releases. For example, if you attempt to import a DLL by ordinal value, the compiler reports "E1025 Language feature not supported" because .hpp generation  is not compatible with importing a DLL by ordinal value. However, you can import a DLL by ordinal value if you turn off .hpp generation. Go to the Project > Options > Output - C/C++ page, and for the option C/C++ Output file generation, select a value that does not include headers, such as "Generate DCUs only."

C++Builder Notes

VCL C++ with LiveBindings Requires Dynamic Packages

VCL C++ projects that use LiveBindings require that the project is built or linked with runtime packages enabled (this is the default for C++). You can enable and disable the 'Link with Runtime Packages' option on the Project > Options > Packages > Runtime Packages page.

TSQLConnection.Driver Not Linking Correctly to ODBC

If a C++ application built without runtime packages has a TSQLConnection that has the "Driver" option set to "ODBC", you must manually add #pragma link "odbc32.lib" to the project. If not, as many as thirty-three linking errors might appear when building the application. Runtime packages are enabled by default for C++. You can enable and disable the 'Link with Runtime Packages' option on the Project > Options > Packages > Runtime Packages page.

Adding .dylibs Required for Dynamic Linking C++ FireMonkey OS X

For C++ OSX applications that use packages, the required run-time package deployment might be incomplete. Some packages might need to be deployed manually; this includes packages that are required implicitly by the project's listed run-time packages but do not also appear in the run-time package list (at Project > Options > Runtime Packages). The workaround is to use the Deployment Manager to add any required .dylibs.

C++ Console Applications that Need to Link with the Delphi RTL

If you create a C++ console application with no framework selected, the console application will not be able to link with the Delphi run-time library or handle Delphi exceptions. If you add a unit to this console application, the IDE adds the appropriate Delphi run-time libraries but does not switch the C++ run-time libraries to the versions that initialize and work with Delphi. The workaround is to enable "Link with the Delphi Runtime Library" on the Project > Options > C++ Linker page.

C++ Linker Error for TList

The C++ Linker generates an error because no function body is generated for the subscript operator of TList template (TList__1).

The following TList__1<T> member is not being expanded:

T operator[](int Index) 
{ return Items[Index]; }

Here is a workaround:

TList__1<TMyClass>* p;
  (*p)[0]->Doit();// This fails to link
  p->Items[0]->Doit()// This links

System.UnicodeString.t_str() Now Deprecated

The UnicodeString.t_str() function now always returns wchar_t* regardless of the current _TCHAR mapping.

This change does not affect you if you use _TCHAR mapping = wchar_t.  In recent releases, t_str() returned either const char* (if _TCHAR was mapped to char), or const wchar_t* (if _TCHAR was mapped to wchar_t). If _TCHAR mapping is set to char, you cannot assign the result of the t_str() function to something that does not support wchar_t (a compiler error is emitted in this case).

In order to use char values, convert the code as shown:

Before XE: mystr.t_str()

For XE, XE2, and XE3: AnsiString(mystr).c_str()

Specifying WebSnap Directories

If you are using C++Builder with WebSnap, ensure that the executables are written to the same directory as the HTML files. On Project>Options>Directories and Conditionals>Final output directory, enter a dot (".") so that the executable is written to the project directory.

Resolving Code Completion Problems

Infrequently, Code Insight for C++ might fail or provide incomplete results when a project's precompiled header is regenerated. If this occurs, one of the following actions will fix the problem:

  • Re-Make the project
  • Delete the precompiled header
  • Clean and Make the project

Using the Delphi DesignIntf and DesignEditors Tools

If you are creating a C++ package that contains a Delphi unit that uses the DesignIntf and DesignEditors tools, you must choose Project > Options > Delphi Compiler > Other Options. In Use these packages when compiling, add DesignIDE in the combo box.

Database Notes

VCL C++ with LiveBindings Requires Dynamic Packages

VCL C++ projects that use LiveBindings require that the project is built or linked with run-time packages enabled (this is the default for C++). You can enable and disable the 'Link with Runtime Packages' option on the Project > Options > Packages > Runtime Packages page.

Uninstalling LiveBindings Components

Uninstalling the LiveBindings component packages dclbindcompdbx170.bpl, dclbindcompfmx170.bpl or dclbindcompvcl170.bpl without also uninstalling dclbindcomp170.bpl can cause various problems in the IDE.

To workaround this issue, do either of the following:

  • Uninstall all LiveBindings components:
    • Uninstall dclbincomp170.bpl, which will cause the other packages to be uninstalled.
  • Uninstall a subset of the LiveBindings component packages. To safely do this, follow these steps:
    1. Start RAD Studio.
    2. Close all projects.
    3. Click Component > Install Packages.
    4. Uncheck the packages that you would like to uninstall.
    5. Click OK.
    6. Exit RAD Studio.
    7. Restart RAD Studio.

LiveBindings Limit

LiveBindings with TListBox and TClientDataSet supports as many as 200 rows of data. If you have more than 200 rows of data, you must handle the data programmatically.

TSQLConnection.Driver Not Linking Correctly to ODBC

If a C++ application built without run-time packages has a TSQLConnection that has the "Driver" option set to "ODBC", you must manually add #pragma link "odbc32.lib" to the project. If not, as many as thirty-three linking errors might appear when building the application. Run-time packages are enabled by default for C++. You can enable and disable the 'Link with Runtime Packages' option on the Project > Options > Packages > Runtime Packages page.

Remove LiveBindings between Two Components Before Deleting One of Them

An Access Violation might occur after you remove a component that is referenced in LiveBindings to a component that remains in the application. For example, if the 'Adapter' property of a TAdapterBindSource component is set to the TDataGeneratorAdapter component, removing the TDataGenerator component can cause an AV.

The workaround is to disconnect the TDataGeneratorAdapter from the TAdapterBindSource before deleting the TDataGeneratorAdapter. In other words, set the 'Adapter' property to empty.

Might Need to Deactivate LiveBindings in Data Modules

In some scenarios, errors on shutdown might occur when a form references a LiveBindings data source, such as TPrototypeBindSource, in a data module. The workaround is to deactivate the data source in the OnDestroy event of the data module as follows:

procedure TDataModule1.DataModuleDestroy(Sender: TObject);
PrototypeBindSource1.Active := False;

FireMonkey Client Support for DataSnap REST Client Proxy

DataSnap or Cloud clients for C++/OS X do not link when built with run-time packages. The workaround is to add CustomIPTransport to the run-time packages list (choose Project > Options > Packages > Runtime Packages).

Remote Data Module Must Have Name Other than AppServer

When you use the Remote Data Module wizard, do not set the name of the CoClass to be 'AppServer'. The CoClass name is used to create an interface whose name is "I<CoClass>". And for RDM, that interface derives from IAppServer. Because IAppServer cannot derive from IAppServer, using AppServer as the CoClass name might cause a crash. Use any name for the CoClass other than AppServer.

InterBase XE3 ODBC Driver Available as Separate Download

InterBase XE3 is installed with RAD Studio XE3. However, the new InterBase ODBC driver is not included in the installation. This driver is available for registered users to download at

Unicode and Drivers

The following database drivers are not Unicode-enabled:

  • DB2
  • Sybase ASE
  • Informix

Connection Failure

If you are upgrading a database application from Delphi 2007 to Delphi XE3, the connection might fail. The workaround is to add Data.DBX<database_name> to your uses clause.  For example, if you are using a TSQLConnection and connecting to an Oracle database, you need to add DBXOracle to your uses clause.

MySQL Servers

The following combinations have been tested:

LibMySQL.dll (5.1.XX) DBXMys.dll MySQL 4.0.XX Server
LibMySQL.dll (5.1.XX) DBXMys.dll MySQL 4.0.XX Server
LibMySQL.dll (5.1.XX) DBXMys.dll MySQL 5.0.XX Server
LibMySQL.dll (5.1.XX) DBXMys.dll MySQL 5.1.XX Server

RAD Studio also supports Sqlite 3.x.

Driver Conflicts in Multi-Version Installations

If you have a previous version of the product installed and try to use the older version, it may load the drivers from this release when running from the IDE. This is because the \bin directory is ahead in the system path. To use the older drivers, one solution is to add an Override to your path in Tools > Options > Environment Variables and place your older \bin directory at the front of the path.

Supported Servers


  • InterBase XE3, XE, 2009, 2007, 7.5.1, 7.1*, 8.0*, 6.5* (All) (Driver dbxINT.dll, Client GDS32.DLL)
  • Firebird 2.5, 2.1, 1.5 (Ent/Ult/Arch) (Driver dbxfb.dll, Client fbclient.dll)
  • Sybase SQL Anywhere 12, 11, 10, 9, 8*, (Ent/Ult/Arch) (Driver dbxASA.dll, Client dbodbc*.dll)
  • DB2 UDB 9.5, 9.1, 8.x*, 7.x* (Ent/Ult/Arch) (Driver dbxDB2.dll, Client db2cli.dll)
  • Informix 9.x (Ent/Ult/Arch) (Driver dbxINF.dll, Client isqlb09a.dll)
  • Microsoft SQL Server 2008, 2005, 2000 (Ent/Ult/Arch) (Driver dbxMSS.dll, Client sqlncli10.dll)
  • MySQL 5.1, 5.0.27, 4.1* (Pro/Ent/Ult/Arch) (Driver dbxMYS.dll, Client libmysql.dll)
  • Oracle 11g, 10g, 9.2.0*, 9.1.0* (Ent/Ult/Arch) (Driver dbxora.dll, Client OCI.DLL)
  • Sybase ASE 12.5 (Ent/Ult/Arch) (Driver dbxASE.dll, Client libct.dll & libcs.dll)
  • Sqlite 3.x (Pro/Ent/Ult/Arch) (Driver [use the Data.DBXSqlite unit, installed by default in C:\Program Files (x86)\Embarcadero\RAD Studio\<n.n>\source\data\dbx], Client sqlite3.dll)

* Driver not fully certified with this version of the database.

Note: Clients are available for download from the vendors' websites.

Debugger Notes

Ensure Debug Info for Run-Time Packages: Add .dcp Files to Deployment

If your Delphi application links with run-time packages, the expected debug information might not be deployed. In this case, breakpoints would be ignored, for example. This is true for Mac OS X applications and for remote Win64 or remote Win32 applications.

The workaround is to use the Deployment Manager to add the .dcp files that correspond to the run-time packages in your run-time package list.

For instance, if you are using the rtl and fmx run-time packages, you must deploy the rtl.dcp and fmx.dcp files with your application.

Use the .dcp files located in the Embarcadero\Rad Studio\10.0\lib directories, as follows:

  • For an OS X application: Embarcadero\Rad Studio\10.0\lib\osx\debug
  • For a remote 64-bit Windows application: Embarcadero\Rad Studio\10.0\lib\win64\debug
  • For a remote 32-bit Windows application: Embarcadero\Rad Studio\10.0\lib\win32\debug

32-bit Windows Remote Debugger Might Not Start on Repeated Session

If you are using a remote profile and PAServer to debug a 32-bit Windows application, you might encounter the following error on launching a second debug session if the debug source file is modified:

The process cannot access the file because it is being used by another process

The workaround is to open the Task Manager and stop all running rmtdbg170.exe processes (select End Process).

For more information about debugging, see:

Unexpected Results from Exceptions on Mac OS X

On Mac OS X, certain OS exceptions are mapped to Delphi language exceptions by the run-time library. These include the mach-level exceptions EXC_BAD_ACCESS, EXEC_ARITHMETIC and EXC_BAD_INSTRUCTION, or the equivalent Unix-level signals. This facility is not compatible with debugging and is disabled when a process is created for debugging. The debugger will notify the user when the exception is raised. However, programs that rely on catching such exceptions and continuing might behave differently when run under the debugger.

Messages on Mac After Crashes

If your OS X application contains unhandled exceptions, the debugger displays an exception notification that allows you to break, continue, or ignore. If you continue, and if you also have Xcode installed on the target Mac, the Mac displays a "quit unexpectedly" warning message, asking you to send a report to Apple. You can disable this warning by visiting the CrashReporterPrefs page, located on the Mac in Developer/Applications/Utilities. Click the Server button to allow for unattended operation.

Data Breakpoints in Code

Attempting to place a data breakpoint in code might result in program corruption. For example, placing a data breakpoint on a VMT slot might result in the program jumping to an incorrect location (the "last" byte of the address is overwritten with 0xcc).

System Mechanic 7 Pro is Incompatible with the Debugger

System Mechanic 7 Pro disables the functionality of the integrated debugger. The observed behavior is immediate termination of the process and a diagnostic message in the Event Log View. If the product is installed, debugging functionality can be restored by disabling execution of the "iolo DMV Service" via the Services manager.

Internationalization Notes

Migrating ITE/ETM Projects from Delphi 7

To upgrade an ITE/ETM project from Delphi 7, your dfms need to be in text format. To perform this conversion, use convert.exe (installed by default to C:\Program Files\CodeGear\RAD Studio\10.0\bin).

After the project is imported and you have updated your resource dll with the Resource DLL Wizard, you might experience an issue where the resource dll does not seem to be updated.  In this case, simply performing the update one more time in the wizard resolves the problem.

Using your user-locale as the UI locale

It is not recommended that you use your user-locale for the UI locale. The user-locale controls the format of numbers, date and time. The UI-locale controls menu, error message and all human-readable text for the specific language.

VCL/RTL and Locale

VCL/RTL selects the same localized module that Windows uses. If you want to use the user-locale to select the UI module,create a new unit, OverrideUIWithUserLocale.pas, and paste the following code:

            unit OverrideUIWithUserLocale;
              uses Windows;

Add this OverrideUIWithUserLocale unit as the first entry of the uses section:

           program Project1;
             Unit1 in 'Unit1.pas' {Form1};

FireMonkey Notes

Metropolis UI Styles Not Supported on Mac OS X

FireMonkey Metropolis UI styles are designed for Windows 8 and are not compatible with OS X. Although you can attach a Metropolis UI style, such as MetropolisUIDark, to a FireMonkey OS X application, the combination can result in a crash at run time.

TImageControl.EnableOpenDialog Is Now Enabled by Default

The FMX.Controls.TImageControl.EnableOpenDialog property is enabled by default. That is, this property causes an image control to display the Open File dialog and replaces the image with a file selected by the user. To disable this behavior, uncheck the EnableOpenDialog property.

Use TPopup.IsOpen Instead of TPopup.Popup

We recommend that you open/close TPopup by setting the TPopup.IsOpen property to True/False respectively. Using TPopup.Popup and TPopup.ClosePopup is not recommended, and an Access Violation might be received when the Popup method is triggered on a TPopup component.

Required Files Missing (IPIndyImpl.dcp and inetdbexpress.dcp)

Delphi FireMonkey applications that target the Win64 and OS X platforms might report missing files. IPIndyImpl.dcp (used by CloudService.dcp) is missing for the Win64 and OS X platforms, and inetdbxpress.dcp is missing from the win64\release directory. You can download these files in a .zip file at .

TViewport3D Must be Hosted in a 2D Environment

Adding 3D components to a TViewport3D that is not parented by an HD Form or TLayer3D results in an Access Violation.

TListBox.OnChange Event Does Not Support the Selected Property

The OnChange event for Fmx.ListBox.TListBox creates an access violation if the procedure uses the TListBox.Selected property.

Far-East Characters Might Have Display Problems

A FireMonkey OS X application under the debugger with some European locales does not correctly display Far-East characters. For example, Japanese/Chinese characters might be displayed incorrectly in all conponents when the system's region setting is not English or Japan. However, if the application is invoked from the Finder, the application might display Far-East character correctly.

To avoid this problem, add the following line to the top of paserver.command shell script:

 export LANG=C

The paserver.command script is typically located in the folder /users/username/Applications/Embarcadero/PAServer.

Grid Dialog Closes Unexpectedly if ESCAPE is Pressed

When you are editing a grid inside a modal form (that is, typing text on a grid cell), pressing the ESCAPE key might unexpectedly close the modal dialog.

Indy TIdAntiFreeze Workaround for FireMonkey Designer

The Indy TIdAntiFreeze class is not available as a design-time component for FMX applications. As a workaround, add FMX.IdAntiFreeze to your uses clause and instantiate it programattically.


Interactive Gestures Not Being Detected on Windows 8

When standard and interactive gestures are enabled together, they might not be detected by the Gesture Manager.

Close Button Visible in Metropolis UI Grid Application

If you create a Metropolis UI Grid application, and perform a swipe-up gesture, the Close button remains visible as long as the application is running. this behavior is unexpected.

VCL Styles for VCL Applications

To add a custom style to your VCL application, go to the Project > Options > Application > Appearance dialog box. The XE3 release does not support Styles for Ribbon Controls.

Popup Form Closes Unexpectedly in Styled Applications

In applications that use Styles, sometimes Form.Close does not work, and a popup form might close if it loses focus.

SetThreadAffinityMask Does Not Support 64-bit

The RTL function Win.Winapi.Windows.SetThreadAffinityMask does not support 64-bit Windows development. The workaround is to declare your own version of SetThreadAffinityMask. For more information, see .

Run-Time Themes and TImageList.ColorDepth

If you set the TImageList ColorDepth property to cd32Bit and the ImageList contains transparent images, you must enable Run-Time Themes so that the images blend properly when drawn on controls. In the IDE, go to Project > Options > Application.

Add DataSnap.Midas.dcu if Using Reconcile Error Dialog or TSimpleDataSet

A VCL project that contains a VCL Reconcile Error dialog or TSimpleDataSet component does not compile without the addition of DataSnap.Midas.dcu. You can find DataSnap.Midas.dcu in your product installation directory, under \lib\platform\debug, where platform is win32, win64, or osx32.

Unicode Problem in ClientDataSet.SaveToFile to XML

If international characters are used in the String/Memo fields, TCustomClientDataSet.SaveToFile to XML might generate incorrect data.  For example, spaces might appear in place of accented characters.

SizeOf Problem for TNotifyIconData

Due to changes in the Windows SDK, calling SizeOf(TNotifyIconData) will yield incorrect results on Windows versions prior to Windows Vista. Calling the TNotifyIconData.SizeOf method returns the correct size on all versions of Windows.

ActiveX Notes

Use TLIBIMP to Import a 64-bit Type Library or ActiveX Control

The Component > Import Component wizard looks only at the 32-bit Registry. So when running on a 64-bit system, you must use TLIBIMP directly if you wish to import a 64-bit specific Type Library or ActiveX Control.

Use 64-bit TRegSvr to Register 64-bit DLLs or In-Process Servers

The IDE, being a 32-bit process, cannot register 64-bit In-Proc/DLL Servers (32-bit processes cannot load 64-bit DLLs). To register 64-bit in-proc servers, you must use the 64-bit version of TRegSvr.exe, located in $(BDS)\bin64\TRegSvr.exe.

C++ ActiveX Libraries Must Use Static RTL and Packages

All C++ ActiveX libraries (using either ATL or DAX) must use static RTL and packages. Choose Project > Options, and then:

  • On the C++ Linker page, check False for Link with Dynamic RTL.
  • On the Packages page, uncheck Link with runtime packages .

SOAP Server Notes

Using SOAP Components in C++ on OS/X

OS/X C++ Applications that use the SOAP runtime (such as the THTTPRIO component) must explicitly link in the Indy package as the IDE only catches top level dependencies.

To do so, add the following lines to a .cpp file of your project:

 #if defined(__APPLE__)
   #pragma link "IndyCore.a"
   #pragma link "IndyProtocols.a"
   #pragma link "IndySystem.a"
   #pragma link "IndyCore.bpi"
   #pragma link "IndyProtocols.bpi"
   #pragma link "IndySystem.bpi"

An Alternate Path to Invoke WSDL Importer

If you invoke the WSDL Importer wizard using the path File > New > Other > WebServices > WSDL Importer, and you enter an invalid URL, error messages such as the following might occur:

  • Unable to load WSDL File/Location: <wrongURL>. Error [Empty document].
  • Unable to load WSDL File/Location: <wrongURL>. Error [Whitespace not allowed at this location]

The preferred workaround is to start the WSDL Importer using the alternate pathway (Component > Import WSDL). The error should then be caught inside the wizard.

.NET SOAP Services Available with Delphi Prism

The Win32 SOAP server support generates the older RPC|Encoded style WebServices. If you want a document/literal service or a service of any other WS-I compliant style, you should build your SOAP server using Delphi Prism, which supports the SOAP specifications that are supported by the .NET framework, including WS-I compliant styles.

Help Notes

Location of Installed Help

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

Microsoft Document Explorer 2008 (DExplore.exe)

DExplore is required to view Delphi and C++Builder XE3 locally installed documentation. If you do not have Microsoft Document Explorer 2008 installed, it will be installed as part of the Help System Install.

  • It is a known issue that a pre-release version of the license for Microsoft Document Explorer XE is displayed.
  • If you receive an access violation when you press F1 in the IDE, it is possible that an incompatible version of DExplore.exe has been installed. (To verify the version, run DExplore.exe standalone, check the Help | About box: If it says QFE, a quick fix has been installed by either Visual Studio 2008 or Prism.) To fix this problem, go to the Control Panel and run a Repair operation on the Embarcadero Delphi and C++Builder XE3 Help System.


The Microsoft Windows Platform SDK help is not installed by default with the product help. You can choose to install the MS SDK Help when you install the help by setting the MS SDK Help item on the Select Features page to Will be installed on local hard drive. For more information, see the Install.html file.

IntraWeb Documentation

For information about IntraWeb, including help for the VCL for the Web components, see In the RAD Studio help, see Using IntraWeb (VCL for the Web) Index.

Docwiki Has the Most Up-to-Date Content

We generate the RAD Studio help from a docwiki, located You will always find the most recent and up-to-date help by visiting the docwiki. All RAD Studio users are invited to participate in the docwiki. You can create your own user account by clicking Log in \ Create account on any page in the docwiki.

There are actually three separate wikis:

Refining the Search and Index in the Help

You can choose specific help volumes (such as MSDN Online) to be used in Search and Index functions in the online help. For information about using the help viewer to your advantage, see the full EDN article, "Getting the Best Results with RAD Studio Online Help" at

See Also

Personal tools
Previous Versions
In other languages