Release Notes for Embarcadero Delphi 2010 and C++Builder 2010

By: Dee Elling

Abstract: Important supplementary information that might not appear in the main product documentation

    Release Notes for Embarcadero Delphi and C++Builder 2010

This file contains important supplementary information that might not appear in the main product documentation. We recommend that you read this file in its entirety. For an updated version of these Release Notes, see the Embarcadero Developer Network article  (

This document refers to "the product" when the information applies to Delphi 2010 and/or C++Builder 2010.

For information about installation, deployment, and licensing issues, see the Install, Deploy, and License files located, by default, at C:\Program Files\Embarcadero\RAD Studio\7.0.


    Installing, Uninstalling, and Upgrading your Product

  • Before installing, uninstalling, or upgrading the product, see the Install.htm and License.rtf files for detailed information about installation and licensing issues. The Install.htm file gives the system and free space requirements for installing Delphi and C++Builder 2010, as well as installation and upgrade procedures.

    Where to find the Install.htm file:

    After installation, all the release notes (including the Install.htm and License.rtf files) are located by default at C:\Program Files\Embarcadero\RAD Studio\7.0\.

  • When installing Delphi 2010 on a system with an earlier version of Delphi that includes Blackfish SQL, it is recommended that you first stop the Blackfish SQL service before beginning the installation process. To stop the Blackfish SQL service:

    1. Press "Windows Key"+R.
    2. Type "services.msc" and press Enter.
    3. Find the Blackfish SQL service and stop it.

    After stopping the Blackfish SQL service, wait until the BSQLServer.exe process terminates before beginning the installation. You can verify that the BSQLServer.exe process has terminated by launching the Windows task manager by pressing Ctrl+Shift+Esc and checking that the "Processes" tab does not have an entry for BSQLServer.exe.


    General Notes

Demos:  The demos for the product are installed in directories according to the way you install the product and whether you are using Windows Vista:

  • If you choose All Users during installation, the demos are installed in C:\Documents and Settings\All Users\Shared Documents\RAD Studio\7.0\Demos.
  • If you choose Just Me during installation, the demos are installed in C:\Documents and Settings\username\My Documents\RAD Studio\7.0\Demos.
  • On Windows Vista, if you choose All Users during installation, the demos are installed in C:\Users\Public\Documents\RAD Studio\7.0\Demos.
  • On Windows Vista, if you choose Just Me during installation, the demos are installed in C:Users\username\Documents\RAD Studio\7.0\Demos.

Debug with WebAppDebugger:  To debug WebSnap and WebBroker applications using the WebAppDebugger, you should 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). 

Register a COM Server:  To register a COM server, you need to run (the first time only) with /regserver as a run parameter. Follow the steps outlined here:  

  1. Create a project.
  2. Save the project.
  3. Set Run | Parameters to /regserver.
  4. Run your project. The application registers and then closes.
  5. Clear the /regserver setting on the Run | Parameters page.

Resource Compiler Choices:  You now have two choices in a resource compiler. To select a resource compiler, go to Project>Options>Resource Compiler and select either RC or BRCC32.  When you choose to use RC, the resource compiler that is used has the file name CGRC.exe, but the help gives the erroneous name ERC.exe. 

WinHelp:The legacy WinHelp viewer (WinHelp.exe) is not implicitly registered by RAD Studio. If you want to use .HLP files from an application, you need to add "WinHelpViewer" to the uses list of any unit included in the application.

To download the WinHelp viewer, visit the Microsoft website:

IntraWeb Documentation:  For information about IntraWeb, including help for the VCL for the Web components, see

    Registry Keys

If you are a VCL Component Vendor and your component installer updates paths in the registry to include paths to your components, there is one additional registry key your installer should update in:

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\CodeGear\BDS\7.0\Library\Browsing Path
  • Software\CodeGear\BDS\7.0\Library\Debug DCU Path
  • Software\CodeGear\BDS\7.0\Library\Namespace Search Path
  • Software\CodeGear\BDS\7.0\Library\Package DCP Output
  • Software\CodeGear\BDS\7.0\Library\Package DPL Output
  • Software\CodeGear\BDS\7.0\Library\Search Path

    Windows VistaTM / Windows 7 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.

WinHelp:  Windows Vista does not support the legacy WinHelp help viewer (WinHelp.exe). If you want to use .HLP files, you need to add the WinHelp32.exe viewer to the uses list of any unit included in the application. To download the WinHelp32 viewer, visit the Microsoft website See the related item under General Notes. If possible you should migrate your help system to HtmlHelp.

TAnimate and TShellResources:  If you use the TAnimate component in Vista or in Windows 7, you must also add the component TShellResources under the Win32 tab 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:  If you are using BDE on Windows Vista, you need to reconfigure BDE so that it does not attempt to write files to the C:\<root> directory. To do this, 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

Debug Requires Admin:  On Vista with UAC enabled, if an executable's 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

    C++Builder Notes

    Possible Binary Incompatibility with Previous Version of C++ Compiler

You should rebuild your pre-existing C++ projects when you migrate to C++Builder 2010. The C++ runtime libraries have been enhanced and altered to be more current, and the standard C++ libraries from Dinkumware have been updated to version 5.01. Because of these changes, the binary objects generated by the compiler in C+Builder 2010 might differ in some cases from previously compiled versions. The incompatibilities are mainly restricted to the C+ standard libraries.

    Header File cmath.hpp Provided Here

The cmath.hpp header file is missing from the product delivery. You might see problems with cast.hpp, unordered_map.hpp, and date_time/posix_time/posix_time.hpp.  As a workaround, copy the text shown below and save it as cmath.hpp in include/boost_1_39/boost/config/no_tr1 :

//  (C) Copyright John Maddock 2008.
//  Use, modification and distribution are subject to the 
//  Boost Software License, Version 1.0. (See accompanying file 
//  LICENSE_1_0.txt or copy at
// The aim of this header is just to include  but to do 
// so in a way that does not result in recursive inclusion of 
// the Boost TR1 components if boost/tr1/tr1/cmath is in the 
// include search path.  We have to do this to avoid circular 
// dependencies:


#  endif

#  include 

#  endif


    Delphi Interface Parameter with Default Value of nil Handled Differently
Assigning the Type void * to Delphi Interface Now Fails to Compile

The Delphi compiler (DCC32) previously generated the following code in the .hpp file when an interface parameter had the default value of nil:

   void methodName(_di_IIntf param = (void *)(0x0));

Previously the C++ compiler incorrectly accepted this syntax.

In this release, both the Delphi compiler and the C++ compiler handle this case differently.

The Delphi compiler now emits code like this in the .hpp file for an interface parameter with a nil default value:

   void methodName(_di_IIntf param = _di_IIntf());

The C++ compiler now gives an error for code that assigns the type "void *" to a Delphi interface. For instance, the line

   void methodName(_di_IIntf param = (void *)(0x0));

now fails to compile, emitting the error:

   Cannot convert 'void *' to '_di_IIntf'M

If you have Delphi code containing an interface parameter with a nil default value, recompile it with DCC32. If you do not have the source, edit the .hpp file and modify all occurrences like this:

   void methodName(_di_IIntf param = (void *)(0x0));

to this:

   void methodName(_di_IIntf param = _di_IIntf());

    Limitations on Dynamic Loading of DLLs

For available workarounds with DLLs when using RTLDLL, see Known Problems.

    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>Paths and Defaults>Final Output, enter a dot (".") so that the executable is written to the project directory.

    Resolving Code Completion Problems

Infrequently, C++ code insight might fail or provide incomplete results when a project's precompiled header is regenerated. If this situation is encountered, one of the following will fix the problem:

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

    UnicodeString::tstr() Narrows Wide Data

The default VCL string type is now UnicodeString instead of AnsiString.  However, for backward compatibility the method UnicodeString::t_str() returns 'const char*' instead of 'const wchar_t*', by narrowing the wide data of the UnicodeString instance. This can result in unexpected behavior, as code might not expect a call to the t_str() to corrupt the underlying data. This behavior is visible in code that displays the underlying data in the UI, such as a TListItem.

For example, in the following case, the data displays by the ListView are corrupted after the call to t_str() on the last line of the method:

void ProcessSelectedItem(const char* item);
void __fastcall TForm6::ListView1DblClick(TObject *Sender)
int index = ListView1->Selected->Index;
TListItem *ClassItem = ListView1->Items->Item[index];

You should not use UnicodeString::t_str() on fields/properties that do not expect their underlying data to be narrowed. Instead, use either of the following:

  • Set the TCHAR_mapping option to wchar_t (on the Project > Options > Directories and Conditionals dialog box) 
  • Define the USTRING_AS_WCHART macro

Either of these will ensure that t_str() returns the UnicodeString's wide data without modifying it.

    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.

    The Default for New C++ Applications is Now #define STRICT

If your code does not compile in STRICT mode, you can set #define NO_STRICT.

Known Problems contains two instances in which you should turn off the NO_STRICT #define in pre-existing applications.

    Using WinHelp in C++ Applications

To use WinHelp in a C++ application:

  1. Add: #include <WinHelpViewer.hpp>.
  2. Refer to an object declared in the WinHelpViewer header file.
    void LinkWinHelp()
      # pragma startup LinkWinHelp 66
      if (WinHelpTester != NULL)

To download the WinHelp viewer, visit the Microsoft website:

    Command Line Notes

You can build projects from the command line using the MSBuild executable. Select Start Programs>Embarcadero RAD Studio>RAD Studio Command Prompt to automatically set both the path to the MSBuild executable and the environment variable for the product.
These are the environment variables set by the RAD Studio Command Prompt for using the Embarcadero RAD Studio tools, especially MSBuild:

   BDS=c:\program files\Embarcadero\RAD Studio\7.0

If you want to use MSBuild on the command line but are not using the RAD Studio Command Prompt, you should set these environment variables yourself.

For more information about using MSBuild, look up MSBuild in the Index or Contents of the online help.

    Database Notes

    Known Issues

  • DataSnap WebBroker projects created with the new project wizard do not run, but throw an exception stating that an application can only have one data module. The workaround is to remove the line that creates a second data module, as follows:

    1. With your DataSnap WebBroker project open in the IDE, select Project>View Source.
    2. Delete the following line (or a similar line):
      Application.CreateForm(TServerMethods1, ServerMethods1);
  • For greater consistency, the new TDBXAppServerConnection component was renamed TDSProviderConnection, and the package it resides in has also been changed to DataSnapProviderClient140.bpl. The documentation has been updated to use the new name, TDSProviderConnection.

  • The following drivers are not Unicode-enabled:

    • DB2
    • Sybase ASA
    • Sybase ASE
    • Informix

  • If you are upgrading a database application from Delphi 2007 to Delphi 2010, the connection might fail.  The workaround is to add 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.

  • 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

  • Driver co-existence: 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.

    New features


DataSnap is a multi-tier architecture for database applications. DataSnap provides a middle-tier application server that contains and manages remote data modules. DataSnap has been enhanced to provide a very general connection mechanism between components in different tiers.

The class TDSServer manages the creation and lifetime of transports and server method classes. You can use TDSServer to create your own middle tier server. The new component TDSServerClass can be used to specify an application server-side class with published methods that can be called from a remote client using dynamic method invocation. Methods in this class can be called from remote clients, such as the DBX Client Provider or the ADO.NET provider.

Once you have connected to a DataSnap server, you can call methods in an application server similarly to stored procedures. For instance, you can use the new class TSqlServerMethod to call server methods by specifying a text class and method name for command text and parameters for the method. Server methods can use a TDBXReader to receive and return datasets to and from the client.

The new smart tables are an abstraction of the different datasets Datasnap supports, so they can be passed transparently between client and server.

You can still write application server side classes that extend TRemoteDataModule, so that the providers they contain can be accessed by the new client-side TDBXAppServerConnection client component. TDBXAppServerConnection provides connectivity to a DataSnap server using dbExpress and is provided to keep existing applications compatible and take advantage of new DataSnap features. New applications do not need to use TRemoteDataModule or TDBXAppServerConnection with DataSnap.

Application servers need not be connected to databases at all. A server methods class has only two requirements:

  • The class must be a descendant of TPersistent.
  • The MethodInfo directive must be enabled.

For more information about DataSnap, see articles on the Embarcadero Developer Network at: and

Also see Steven Shaughnessy's overview of DataSnap at

    Database Change Notes


The dbExpress driver framework has these changes:

  • MSSQL driver requires the installation of the SQL Native Client. SQL Native Client 2008 is required for dbxmss.dll. SQL Native Client 2005 is required for dbxmss9.dll
  • MySQL driver requires version 5.1.x of libmysql.dll.

    Getting Blackfish SQL Licenses

The way you get deployment licenses for Blackfish SQL has changed. You no longer use the .slip file that was previously included with the product. Now you can generate a deployment license file online at For more information about installation, deployment, and licensing, see the Install, Deploy, and License files located, by default, at C:\Program Files\Embarcadero\RAD Studio\7.0.

    Supported Servers


  • Blackfish SQL Server 8.0
  • InterBase 2009, 2007, 7.5.1, 7.1*, 7.0*, 6.5* (All) (Driver dbxINT.dll, Client GDS32.DLL)
  • Firebird 2.1, 1.5
  • Adaptive Sybase Anywhere 9, 8* (Ent) (Driver dbxASA.dll, Client dbodbc9.dll)
  • DB2 UDB 8.x, 7.x* (Ent) (Driver dbxDB2.dll, Client db2cli.dll)
  • Informix 9.x (Ent) (Driver dbxINF.dll, Client isqlb09a.dll)
  • Microsoft SQL Server 2008, 2005, 2000 (Ent) (Driver dbxMSS.dll, Client oledb.dll)
  • MySQL 4.0.24 (All) (Driver dbxMYSA.dll, Client libmysql.dll)
    Note: No change from dbxMYS.dll of Delphi 2007. It is renamed.
  • MySQL 5.1, 5.0.27, 4.1* (All) (Driver dbxMYS.dll, Client libmysql.dll)
  • Oracle 11g, 10g, 9.2.0*, 9.1.0* (Ent) (Driver dbxora.dll, Client OCI.DLL)
  • Sybase 12.5 (Ent) (Driver dbxASE.dll, Client libct.dll & libcs.dll)

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

    Modeling Notes

When you open the context menu (right-click) on the Modeling View tab of the Project Manager, the command Open Diagram might not be enabled. However, you can open the diagram view by double-clicking the grayed-out Open Diagram command.

    Debugger Notes

  • 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).

  • Installation of 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.

    Documentation Notes

  • RAD Studio help is now built from a docwiki, and all RAD Studio users are invited to participate in the docwiki located at:

    Localized versions of the docwiki are also available; see the navigation sidebar in the main docwiki.

  • You can choose specific help volumes (such as MSDN Online) to be used in search and index functions in the online help.

    For example, you can limit your searches to include only the local help provided by RAD Studio, and you can specify that the help viewer will display local help first or help from online providers first.

    To specify the help source for the help viewer, select Tools > Options > Help > Online.

    Select the option "Try local first, then online" to enable the browser to find the proper RAD Studio Help files and to display search results from the local help first, followed by results from online providers.

    For more information about using the help viewer to your advantage, see the full CDN article, "Getting the Best Results with RAD Studio Online Help" at

  • Microsoft Document Explorer 2008 (dexplore.exe) is required to view Delphi and C++Builder 2010 online documentation.  If you do not have Microsoft Document Explorer 2008 installed, it will be installed as part of the Help System Install.  There is a known issue that a pre-release version of the license for Microsoft Document Explorer 2010 is displayed.

  • You can obtain updates of the help system by using the same process you use to obtain product updates. Select Start | Programs | Embarcadero RAD Studio | Check for Updates.

    International Notes

If you are using IME (input method editor) on XP SP2, a sporadic error caused by a .NET Framework bug might result in a long delay (approximately 5 minutes) followed by an error message. After two or three times, this error appears to stop occurring. All language windows are potentially affected.  To avoid this error, You should apply XP SP3. Or see for more information. 

Help for the External Translation Manager:  When you launch ETM.exe from the "bin" directory and click on "Help | Contents" you might get "Unable to find a Table of Contents" error message, and nothing is displayed.  You can find help topics about the external translation manager ("Setting Up the External Translation Manager" and "Using the External Translation Manager") in the RAD Studio 2010 online help.  Enter the topic title in the help Index, or locate the Localization Applications Index under RAD Studio IDE | Steps in Developing a Project | Localizing Applications.


    SOAP Server Notes

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.

    Known Problems


The Register and Unregister menu items are not enabled if you open and run an ActiveX library project in C++ Builder 2010 that was created with C++ Builder 6. The work around is to go to Run>Parameters and set Host application to "C:\windows\system32\regsvr32.exe" and the Parameters to <ProjectName>.

    Support in IDE of Unicode Characters Outside the Basic Multilingual Plane

On XP and previous operating systems, the font that the IDE uses (Tahoma) that 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, it is necessary to install supplemental language support into Windows. This is done through the Regional and Languages Options item in the Windows control panel. For additional details, refer to

    Cannot Use Dynamic Link RTL if Dynamically Load DLL

If you dynamically load a DLL, you cannot link dynamically with the runtime library. Otherwise, an Access Violation occurs when the program terminates. There are two workarounds:

  • One workaround is to not check "Dynamic RTL" on the Project>Options>C++ Linker page (this turns off dynamic linking for the RTL).

  • The second workaround, which enables the use of dynamic linking for the RTL, is to define _DLL_UNLOAD_WORKAROUND in the "Conditional defines" field on Project>Options>Directories and Conditionals.

    The Default for New C++ Programs Is Now STRICT

With the C++Builder 2010 release, the default mode for new C++ applications is STRICT.

It is recommended that you upgrade applications that define NO_STRICT to STRICT mode (by removing the NO_STRICT macro), because STRICT mode provides enhanced type-safety and matches the native mangling of the VCL.

The following two items describe situations in which NO_STRICT must or should be avoided:

  • Must Turn off NO_STRICT #define with GdiPlus library

The C++ library GdiPlus cannot be used in non STRICT mode, since it requires that Graphics::Graphics(HDC) be distinguishable from Graphics::Graphics(HWND). In non STRICT mode, both HWND and HDC are "void*". Otherwise, you get the error:

[C++ Error] GdiplusGraphics.h(37): E2015 Ambiguity between 'Gdiplus::Graphics::Graphics(void *)' and 'Gdiplus::Graphics::Graphics(void *,int)'

  • Should Turn Off NO_STRICT #define with VCL

VCL now mangles Windows handle parameters to match the C++ STRICT mangling scheme. VCL still provides entry-points for old applications that define NO_STRICT.

    Runtime Themes and TImageList.ColorDepth

If you set the TImageList ColorDepth property to cd32Bit and the ImageList contains transparent images, you must enable Runtime Themes so that the images will blend properly when drawn on controls.

    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\Embarcadero\RAD Studio\6.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.

    Unicode Problem in ClientDataSet.SaveToFile

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

Copyright 2009 Embarcadero Technologies. All rights reserved.

Server Response from: ETNASC04