                        
Delphi 8.0 for the Microsoft .NET Framework
Release Notes
 
============================================================

This file contains important supplementary information that
may not appear in the main product documentation. Borland
recommends that you read this file in its entirety.

For information about installation, deployment, and licensing
issues, see the Install, Deploy, and License files located, by
default, at C:\Program Files\Borland\BDS\2.0.

============================================================
CONTENTS
============================================================

GENERAL NOTES
PORTING CONSIDERATIONS
DATABASE NOTES
ASP.NET NOTES
DEBUGGER NOTES
MODELING NOTES
PACKAGE NOTES
INTERNATIONAL NOTES
CALIBERRM NOTES
STARTEAM NOTE
OPTIMIZEIT PROFILER NOTE
DOCUMENTATION NOTES
INDY COMPONENTS NOTE
COMPONENT ONE NOTES
RAVE NOTE  

============================================================
GENERAL NOTES

* C#Builder users should refer to install.txt for important
  information about installing both C#Builder and Delphi 8 for
  .NET on the same machine.

* Delphi 8 for .NET stores assembly and Tool Palette
  configuration information in the file ApplicationSettings.xml,
  located in the user's home directory at:
  
  Documents and Settings\<username>\Local Settings\Application Data\Borland\BDS\2.0 

  This file is not deleted during an uninstall and might cause
  assembly version errors in the IDE if you install another
  edition of Delphi 8 for .NET (for example, Enterprise or
  Architect) on the same machine. To avoid this problem, delete
  the ApplicationSettings.xml file BEFORE installing another
  product edition.
  
* When the Message window is undocked and messages are
  generated, stopping the running project causes the Message
  window to take up the entire screen.  To close the Message
  window and return to the IDE, press Alt + F4.
  
* When an application that references an assembly is compiled
  for the first time (and the .dcpil is generated for the first
  time), several false "Identifier redeclared" errors may
  occur. Recompiling the application should resolve the errors.
  
* After running a project and then turning off the "Use Debug
  DCUILs" compiler option, attempting to compile the project
  results in the error "Bad packaged unit format:
  c:\borland\bds\2.0\lib\mscorlib.dcpil.System." To resolve the
  error, save all the files in the project, exit and restart the
  IDE, and rebuild the project.
  
* When working with imported WinForm controls, public properties
  can be accessed directly in code. Properties that are not
  public in the imported wrapper can be accessed via the Control
  property of the imported control. For example:
  
  Self.ImpCheckBox1.Checked := true;
  Self.ImpCheckBox1.Control.BackColor := System.Drawing.SystemColors.Desktop;

  The ControlText property is visible at design time, but not at
  run time. As with other properties this can be set in code.
  For example: 
  
  procedure TForm1.FormCreate(Sender: TObject);
    begin  
        ImpButton1.Control.Text:='Test'; 
    end;
  
============================================================
PORTING CONSIDERATIONS

* You can not assign strings to PChar or PWideChar in Delphi 8
  for .NET. .NET strings are not modifiable, and you can not
  take the address of a character in the string.  Therefore,
  PChar and PWideChar are not assignment compatible with String.
  You need to copy the string data to a local array variable.
  PChar and PWideChar will work with local array variables.
  
* In Win32, floating point values with less than four decimal
  places assigned to variants will appear in the variant with a
  type of Currency. In .NET, the same values will appear in the
  variant with a type of Double. This does not affect the
  functionality of float values used in variants (arithmetic
  operations will produce the same results), but it will affect
  any source code that extracts the data type from the variant
  and expects to see a currency in the variant.

* When porting Delphi 7 packages to Delphi 8 for .NET, you will
  need to change the package names in the requires clause to
  reflect the following new package names:
  
  Old          New
  ---          ---
  rtl          Borland.Delphi and Borland.VclRtl
  vcl          Borland.Vcl
  vclx         Borland.VclX
  dbrtl        Borland.VclDbRtl
  bdertl       Borland.VclBdeRtl
  vcldb        Borland.VclDbCtrls
  dbexpress    Borland.VclDbExpress
  dbxcds       Borland.VclDbxCds
  dsnap        Borland.VclDSnap
  dsnapcon     Borland.VclDSnapCon
  vclactnband  Borland.VclActnBand
  IBXpress     Borland.VclIBXpress
     
  Packages can now be installed in the IDE by using
  Component|Installed .NET Components|.NET VCL Components, or
  by right-clicking a package in the Project Manager and using
  the Install command.

* When you open a Delphi 7 .pas file directly (not through a project
  file) in Delphi 8 for .NET, the form Designer is not
  displayed.  To resolve this,  rename the *.dfm file to *.nfm,
  and, in the .pas file, change the $R reference from .dfm to
  .nfm.  Then reopen the .pas file.
  
* Parameters declared as 'const' on COM interfaces and callbacks
  to unmanaged APIs (such as the Win32 API) are not passed by
  reference. For backwards compatibility, change any 'const'
  declarations to '[in] var' as follows:

  type
    // VCL declaration
    TFontEnumProc = function (const lplf: TLogFont;
      const lptm: TTextMetric; dwType: DWORD; lpData: LPARAM): Integer; 

    // VCL.NET declaration
    TFontEnumProc = function ([in] var lplf: TLogFont;
      [in] var lptm: TTextMetric; dwType: DWORD; lpData: LPARAM): Integer;

  This change is not needed for external declarations using the
  DllImport attribute.

* When associating custom data with ListBox and ComboBox items,
  mixing the use of <Control>.Items.Objects and sending
  GETITEMDATA/SETITEMDATA messages to the Win32 API is not
  supported. This would interfere with the ListBox's/ComboBox's
  internal references maintained to prevent premature garbage
  collection of the custom data.
  
* When porting a VCL and/or database application originally
  created with Delphi 7, it is necessary to specify the STA
  threading model for the application. This is done by adding
  "[STAThread]" before the begin statement in the main project
  file.
  
* Calling Virtual Constructors from within a Constructor

  Delphi Win32 behavior when calling a virtual constructor from
  within the body of another constructor of the same class type
  is to call the virtual constructor as if it were a virtual
  method on the current object instance.  Delphi for .NET does
  not yet implement this specific aspect of virtual
  constructors.  In Delphi for .NET, a virtual constructor
  called from within a constructor body will be executed as non-
  virtual call on the current object instance.

  Delphi code that relies on this particular aspect of
  constructor polymorphism of the Delphi language can achieve
  equivalent results in Delphi for .NET by implementing the
  polymorphic parts as virtual methods or virtual class methods
  instead of virtual constructors.  Virtual methods and virtual
  class methods are called polymorphically from within
  constructor bodies;  only virtual constructors are not called
  polymorphically yet.

For more information on porting, refer to "Porting VCL
Applications" in the online Help.

============================================================
DATABASE NOTES

* SQLAnywhere V8/V9 Support
 
  A new dbExpress driver (dbexpasa.dll) for Adaptive Sybase
  Anywhere (ASA) is available in this release. The driver is
  certified with ASA V9.
  
* For Delphi 7 SQL Links applications to work as before, do not
  change the BDE installation directory when installing Delphi
  for .NET.

* When using multiple DBWebDataSources controls on the
  same form, make sure that:

  - Each dataset has a unique DataSetName property.  By default,
    DataSets have a DataSetName of NewDataSet. Change this name
    so that it is unique.
     
  - Each Table has a unique TableName, even if the tables are
    in different datasets.  Use the Tables Collection Editor for
    each DataSet to view the tables and change any duplicate
    table names.
    
* Assigning a variant Double value to an untyped parameter can
  raise an Invalid Field Type error when compiling an
  application that connects to certain servers. This is due to a
  change in the compiler from Delphi 7 to Delphi 8 for .NET. In
  Delphi 7, the compiler treated floating point constants as a
  Currency data type. Therefore, if you assign a variant Double
  value to an untyped parameter, it is mapped to ftFloat, which
  can be wrong for some servers. In Delphi 8 for .NET, a
  floating point constant is treated by the compiler as a
  Double. To avoid the Invalid Field Type error, set the data
  type of the parameter before you assign a value to the
  parameter, or assign a Currency value instead of a Variant.
  
* To add the ReconcileError dialog to your project, add the 
  Borland.VCl.RecError unit, located in the \Objrepos directory.

* When running a Delphi 7 dbExpress application on a machine
  where Delphi 8 is installed, be sure to load the Delphi 7
  dbExpress driver dll and not the Delphi 8 dbExpress driver dll.

============================================================
ASP.NET NOTES

* Adding an @Import directive within the body tags of the .aspx
  file causes the Designer to delete all of the controls within
  the body. These directives should be added to the beginning of
  the file.

* Even if Internet Information Server (IIS) is not installed on
  the computer, it is listed as the default server when creating
  an ASP.NET application, and in the Server list on the Project |
  Options | ASP.NET page. Switching from IIS, to Cassini, and
  back to IIS results in a Windows syntax error.

* The Borland HTML formatter incorrectly appends the ASP.NET
  control closing tags after the closing HTML tag when you save
  the file  or open it in the Designer, resulting in a non-
  running form. To avoid this problem, put a space between the
  last attribute value and close tag. For example, change this:
  
  ... runat=server/> 
  
  to this:
  
  ... runat=server />
  
* If IIS is installed after the .NET Framework, ASP.NET must be
  registered with IIS by choosing Start | Run and entering the
  following command:

  %comspec% /K %windir%\microsoft.net\framework\v1.1.4322\aspnet_regiis.exe -i
 
  Otherwise, attempting to run an ASP.NET application in the IDE
  will result in the error "Unable to attach to ASP.NET worker
  process (typically for aspnet_wp.exe or w3wp.exe)."
  
* Even after registering ASP.NET with IIS, the first attempt to
  run an ASP.NET application in the IDE may result in the error
  described above.  Running the application a second time will
  usually succeed.  If the error still occurs, try  using "Run
  | Run without debugging."
  
* C# is the default scripting language for the Delphi for .NET
  ASP.NET units (Web Forms, Web Services, Web User Controls,
  and Global.asax). Therefore, using a C# keyword, such as
  "switch" or "string," as the name of a class or unit in the
  .pas file will result in a compiler error at runtime.
  
* Changing the dock state of the editor window by using the
  "View | Dock Edit Window" menu item or implicitly by
  changing desktops can cause problems with files open in the
  HTML and ASP.NET designers.  To avoid these problems, Borland
  recommends closing any open HTML or ASP.NET files prior to
  switching the editor dock state.
  
* A deployed web application or custom web control may fail to
  run on a remote machine because Borland.Delphi.dll is
  missing. To resolve this, set CopyLocal to True for
  Borland.Delphi.dll (to ensure that it gets copied to the \bin
  directory), and then rebuild and deploy the application.
  Alternatively, you can copy Borland.Delphi.dll to the remote
  machine.
  
* For additional information about the Borland DB Web data-
  aware ASP.NET web controls, refer to ReadMe.txt in the
  \dbwebcontrols folder, located, by default, at \Program
  Files\Borland\BDS\2.0\source\dbwebcontrols.
   
============================================================ 
DEBUGGER NOTES

* The Evaluate/Modify dialog box does not support the Modify
  function.
  
* Evaluating Variant types is not yet supported, however, a
  workaround is available: Say you have a variable of type
  Variant called VariantVar. To evaluate or put a watch on a
  variant to see its value, you would use the following
  expression:

  TObject(VariantVar).ToString

  Data is displayed as a string. If the variant holds an
  integer, a real, or a TDateTime, the expected information will
  be in this string.
  
* Values are not displayed when inspecting, evaluating, and
  watching variables in a package run by a host application. 
  As a workaround, you can:   
  
  1. Add the application project (generally an .exe) and the
     package or assembly project (generally a .dll) to a project
     group.
   
  2. In the Project Manager, right-click the exe node of the
     application project and choose Dependencies. In the Project
     Dependencies dialog, set the checkbox ON for the package or
     assembly to be debugged.
   
  3. In the Project Manager, right-click the exe node of the
     application project and choose Activate to ensure that the
     application (exe) project is active.
  
  4. Open source files for the package or assembly and set
     breakpoints if needed, but ensure that the application
     project remains the active project.
   
  5. Begin debugging.
  
* Using Trace Into (F7) at a call site when no source is
  available for the call target, and involves network traffic,
  such as when calling a web service, may be very slow and may
  trigger a network timeout. Consider using Step Over (F8) or
  breakpoints instead.
  
============================================================ 
MODELING NOTES

* Class helpers are not shown in the Model View or modeling
  diagrams.
  
* The following new ECO components are available to extend
  listbox, grid, and button components.

  - EcoAutoFormExtender - Adds the following property to
    listboxes and grids:

    * EcoAutoForm: Boolean, default value = false
      If EcoAutoForm is true, double-clicking on the
      component will bring up a new autoform.
       
  - EcoDragDropExtender - Adds the following properties to
    listboxes and grids:

    * EcoDragSource: Boolean, default value = false
      If true, the component serves as a drag source.
         
    * EcoDropTarget: Boolean, default value = false 
      If true, the component serves as a drop target. If the
      dragged data is an ECO object, and that object can exist
      in the underlying list, then it can be dropped. The ECO
      object will then be added to the list.
        
  - EcoListActionExtender - Adds the following properties to
    buttons:

    * CurrencyManagerHandle: CurrencyManagerHandle
    
    * EcoListAction: EcoListAction, default value = None
      The EcoListAction enumeration has the following values:
      None      - Nothing
      Add       - Creates a new object of the type contained in
                  the underlying list, and adds it to the list.
      Delete    - Deletes the selected object
      MoveNext  - Moves to next
      MovePrev  - Moves to previous
      MoveFirst - Moves to the first item in the list
      MoveLast  - Moves to the last item in the list
      Unlink    - Unlinks (removes) the selected object from
                  the underlying list, without deleting it
                  (unless the list is a class list).
                  
  - EcoActionExtender - Adds the following property to buttons:

    * EcoAction - EcoAction, default value = None
      The EcoAction enumeration has the following values:
      None           - Nothing
      UpdateDatabase - Updates the database
      Undo           - Undoes the last undo block
      Redo           - Redoes the last redo block
      SetCheckPoint  - Sets a checkpoint and makes a new undo block
      ToggleActive   - Toggles the EcoSpace.Active property
      CreateSchema   - Regenerates a database schema
      
    The EcoActionExtender can be configured with an
    ElementHandle. If there is no ElementHandle available, the
    EcoSpace property must be set in code.    
   
  With all extenders, if they (or their extended components)
  are not indirectly connected to an EcoSpace, the EcoSpace
  property must be set in code.

* It is only possible to retrieve constraints on individual
  objects, not from lists of objects. List operations on lists
  of constraints are not implemented and will fail.
  
* Setting attributes to a Variant type generates code that
  won't compile ([Error] "CoreClassesUnit.pas(216):
  Incompatible types: 'Variant' and 'Object'). 

============================================================ 
PACKAGE NOTES

* When you build a package/assembly, the compiler may display
  a warning ("implicitly linked unit") for any unit that was 
  implicitly linked into the package. Treat these warnings 
  as errors; ignoring them may result in undesired component 
  behavior. In a future release of the Delphi for .NET compiler, 
  these warnings will be changed to errors.
 
  To avoid these warnings, make sure your "requires" clause
  refers to the proper Delphi assemblies and your "contains"
  clause explicitly lists all the units to be included in the
  package/assembly.
  
  Note that there are times when the "implicitly linked unit"
  warning is acceptable, such as when you are building your own
  runtime assembly with a mixture of VCL units and your own custom
  units. However, the restrictions regarding the use of such a
  package/assembly in a component package to be installed into
  the IDE have not changed: You can not build a package/assembly 
  that links into itself *any* Borland supplied .dcu/.dcuils. 
  or to any non-Borland supplied package/assembly that does and 
  have it function correctly in the IDE.

* When creating a package and then adding an existing component
  to the package, you must manually add any required external
  package references to the requires clause.  Otherwise,
  building the package will result in the error "File not
  found: <file>."  When creating a package and then creating a
  new component within that package, the references are added
  automatically.
  
* The Install command on the Project Manager context menu is
  for installing VCL packages. It will install the package on
  the .NET VCL Components tab of the Installed .NET Components
  dialog box.  To install a Windows Form package, use
  "Component | Installed .NET Components" and then click
  "Select an Assembly" to select the package to install.
  
* To remove a non-existing file from the requires clause, use
  the main menu "Project | Remove from Project" command or, in
  the Project Manager, right-click the project node and use the
  "Remove Files" command.  Using the "Remove from Project"
  command on the file in the Requires node will not remove the
  file.
  
* Linking to Packages

  1. Create an application and use "Project | Add Reference" to add
     a reference to a Delphi-produced assembly.

  2. Compile the application. It will now link to the Delphi-produced 
     packages in the Project Manager.  

* Linking in Delphi Units

  1. Create an application and use "Project | Add Reference" to add
     a reference to a Delphi-produced assembly.

  2. In the Project Manager, right-click the Delphi assembly
     and select the "Link in Delphi Units" option. In the
     Object Inspector, the corresponding "Link Units" property
     is set to True.  (Both the option and property are
     disabled if the reference is not a Delphi assembly.)

  3. Compile the application. 
   
  When the "Link in Delphi Units" option is checked, the
  compiler links to the DCUILs, and you will not need to
  distribute the assembly with your application.  When the
  option is not checked, the compiler links to the assembly,
  and you will need to distribute the assembly with your
  application.

  Checking the "Link in Delphi Units" option if you do not have
  the DCUILs or source for the Delphi assembly may result in a
  compiler error.

============================================================ 
INTERNATIONAL NOTES

* The Translation Tools support only VCL Forms applications.

* Projects that reference non-UTF8 files, such as ANSI encoded
  files, will fail to compile within the IDE.  Files that are
  loaded directly by the IDE, rather than referenced by the
  project, will not have this problem.  To resolve this issue,
  either use the command line compiler, or change the files to
  UTF8 by right-clicking each file in the Code Editor and
  choosing "File Format | UTF8."
  
* Installing and using a .NET component that has custom
  properties with extended/multibyte character names will
  result in compiler errors, and those properties will be
  displayed incorrectly in the Object Inspector. Delphi for
  .NET does not support non-ASCII characters in names.
  
* A project will not compile correctly if any part of the
  project path contains a directory name with non-US-ASCII
  characters. To avoid this problem, do one of the following:
   
  - Save the project to a directory that contains only US-ASCII
    characters in the path.
  
  - In the "Project Options | Linker" page, disable the
    "Generate .PDB debug info file" option.  
  
============================================================ 
CALIBERRM NOTES

* The CaliberRM client and server must be version 5.1.
  Otherwise, attempting to log in to the server will fail with
  "An error occurred while loading the projects and baselines:
  com.starbase.caliber.server.RemoteServerException: Exception
  thrown in remote call to getProjectInfo()...".
  
* If you changed the default installation directory when
  installing CaliberRM, you will need to update the SDKApp.ini
  file to reflect that installation directory. By default,
  SDKApp.ini is located in \Program Files\Borland\BDS\2.0\bin.

============================================================ 
STARTEAM NOTE

* If you changed the default installation directory when
  installing StarTeam, you will need to update the SDKApp.ini
  file to reflect that installation directory. By default,
  SDKApp.ini is located in \Program Files\Borland\BDS\2.0\bin.

============================================================
OPTIMIZEIT PROFILER NOTE
 
* The Optimizeit Profiler Evaluation activation key is available
  from the following web site:
  
  http://www.borland.com/products/downloads/download_opt_profiler.html#.  
  
============================================================
DOCUMENTATION NOTES

* In two Help topics, "VCL.NET Overview" and "Importing .NET
  Controls to VCL.NET", the documentation incorrectly states
  that .NET components are wrapped in ActiveX wrappers.
  Actually, the .NET Import Wizard creates a VCL wrapper around
  the .NET control by adding the public members from the .NET
  control to a descendant of the TWinControl class.

=========================================================== 
INDY COMPONENTS NOTE

* The Indy components included with Delphi for .NET consist of
  the most commonly used TCP protocols and basic TCP support.
  The full Indy library provides support for UDP, servers, and
  many additional protocols. Free updates can be obtained from
  the Indy web site at http://www.IndyProject.org/.

  For a list of the components that are NOT included with
  Delphi for .NET, see the file readme.indy.txt in the \BDS\2.0
  directory.
  
=========================================================== 
COMPONENT ONE NOTES

* Windows Server 2003 Web Edition prohibits the installation of
  non-Web serving applications.  Therefore, the full
  ComponentOne installation, which includes both Windows and
  Web-based applications, is not permitted.  However, it is
  possible to perform a custom ComponentOne installation and
  install only the Web-based controls on Windows Server 2003
  Web Edition.
  
* Building a project that contains a C1PrintDocument component
  results in the errors "File not found: C1.C1PrintDocument.Util.dcuil" 
  and "Required package C1.C1PrintDocument not found."
  
============================================================
RAVE NOTE
  
* Rendering components are not displayed in the Options dialog.

============================================================
Copyright (c) 2003 Borland Software Corporation. All rights
reserved.
============================================================
