===============================================
DELPHI 5.0 RELEASE NOTES
===============================================

This file contains important supplementary and 
late-breaking information that may not appear 
in the main product documentation. We recommend
that you read this file in its entirety.

Portions of this file contain information that
applies only to specific editions of the product. 
Such portions are clearly marked with the name 
of the edition (Enterprise, Professional, 
Standard, etc.) to which the information applies.


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

-- INSTALLATION NOTES 
      (READ BEFORE CONTINUING)

-- OTHER RELEASE NOTES 
      INCLUDED WITH THIS PRODUCT

-- ABOUT EDITING THE REGISTRY

-- THIRD-PARTY PRODUCT NOTES 
      AND KNOWN ISSUES

-- DELPHI 5 KNOWN ISSUES

-- ADDITIONAL COMPATIBILITY NOTES

-- ONLINE HELP OMISSIONS, 
      CORRECTIONS, AND CLARIFICATIONS

-- DOCUMENTATION USAGE NOTES

-- DELPHI ON THE WEB


INSTALLATION NOTES
===============================================
The following items describe known issues, 
behavior, and functionality that can affect 
installation of this product. For other
installation issues, including how to remove
the product, see the file INSTALL.TXT at the
root of your CD.

Minimum system requirements
-----------------------------------------------
  * Intel Pentium 90 or higher (P166 recommended)
  * Microsoft Windows 95, 98, 
    or NT 4.0 with Service Pack 3 or later
  * Memory: 32MB of RAM (64MB or more recommended)
  * 80MB hard disk space (Compact install)
  * CD drive
  * VGA or higher resolution monitor
  * Mouse or other pointing device
  * Networks supported: Any Microsoft Windows 
    95, 98, or Windows NT or higher compatible 
	network
	
If you've installed Delphi before
-----------------------------------------------
You can install to the same machine (though to
a different location) as another version of the 
product. If you want to install to the same 
directory as an existing version, uninstall the 
existing version first. In either case, you 
should back up your IDAPI.CFG file (if one is
present) and any other important data, including 
existing projects that you intend to use with 
this version.

Uninstall Internet Control Pack
-----------------------------------------------
If you have installed any previous release of 
the Microsoft Internet Control Pack, uninstall 
that version before installing Delphi.

Installing from a network or shared drive
-----------------------------------------------
If installing from a network or shared drive, 
you must map a drive letter to the server and
folder that contains the INSTALL.EXE program 
that initiates installation of this product.

Windows 98 users: The directory Browse button 
may cause the installation to halt 
----------------------------------------------
If installing under Windows 98 with Microsoft
Client for NetWare Networks and the Microsoft 
Service for NetWare Directory Services (MSNDS)
network clients:

Installation may exit or stop with a fatal 
error message if you click the Browse button 
on the directory selection dialog. 

Workaround: If you choose not to install to 
the default directories, type your directory 
choices into the dialog fields, rather than 
clicking Browse. 

For more information on this problem, see the 
following technical articles at the InstallShield 
and Microsoft sites:

Search for article Q192249 at:
http://support.microsoft.com/search/default.asp

Search for article Q102400 at:
http://support.installshield.com

InstallShield and Microsoft Outlook 98
--------------------------------------
If Outlook 98 is running when you install Delphi,
InstallShield will hang. We strongly recommend 
that you close Outlook 98 and all other Windows 
programs before installing Delphi.

Performing a Custom installation
-----------------------------------------------
To conserve disk space, you can perform a custom 
installation, selecting only the options you 
require. To do so, select the Custom radiobutton 
in the Setup Type dialog during installation. Disk 
space required for the total custom installation 
and individual options is displayed as you select
or deselect options.

Among the options is to install Registry keys only. 
This option can be used to repair keys damaged as 
a result of a computer crash or to set up sets of 
registry keys for different user profiles. 

During a Custom install using registry keys only, 
you may select to install minimal files. These are 
files in the Windows system directory; the option 
installs the files and defines the registry keys.

Just-In-Time Debugging
-----------------------------------------------
During installation, you have the option of 
updating your Just-In-Time Debugger registry 
settings. 

If you choose to update your registry, changes 
are made to the key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
  Windows NT\CurrentVersion\AEDebug\Debugger 

The key is changed to:
C:\Program Files\Borland\Delphi\bin\
   bordbg50.exe -aeargs %ld %ld
(where C:\Program Files\Borland\ 
 is the installation directory)

If you do not perform the update during 
installation, you get a second chance to update 
the registry at program startup. The Just-In-Time 
Debugger automatically starts when any program 
running on your computer fails. Just-In-Time 
debugging and distributed debugging will not work, 
however, unless this registry setting is updated.

If you want to preserve your existing AEDebug 
settings in case you want to change them back 
at a later date, you must follow these steps 
BEFORE updating the registry settings:

1.  Run Regedit.
2.  Select the AEDebug key (noted above).
3.  Choose Registry | Export Registry File.
4.  Name and save the file containing the AEDebug key.

To restore the AEDebug settings you can:

1.  Run Regedit.
2.  Choose Registry | Import Registry File.
3.  Specify the file in which you saved the AEDebug key.


OTHER RELEASE NOTES 
INCLUDED WITH THIS PRODUCT
===============================================

INSTALL.TXT contains system requirements 
and information on installing and removing 
the product.

DEPLOY.TXT contains information about 
redistributing Delphi applications. 

LICENSE.TXT contains information on 
licensing allowances and limitations for this 
product and other Inprise software that is 
bundled with it.

The three text files listed above, along with
this file, are installed to your main Delphi5
directory (default: c:\Program Files\Borland\Delphi5).

DEL5NEW.HLP covers new features and 
compatibility issues. This file is part of 
the main online Help system (see "What's New"
in the Help contents or index).

Enterprise and Professional editions only:
BDEREADME.TXT, BDEINST.TXT and 
BDEDEPLOY.TXT contain release notes, 
installation, and deployment information about 
the Borland Database Engine (BDE) and 
Borland SQL Links products. These files are 
located in your main BDE directory 
(installation default: 
  c:\Program Files\Common Files\Borland Shared\Bde).
IMPORTANT: Any BDE-related information in this
README.TXT overrides any corresponding information
provided in the BDE release notes.

Additional notes about existing issues with BDE 
and utility applications supplied with BDE are 
covered in the DELPHI 5 KNOWN ISSUES section
later in this document.


ABOUT EDITING THE WINDOWS REGISTRY
-----------------------------------------------
Warning: 
Registry edits are performed at your own risk.

Several items in this document and in other 
parts of the documentation that accompany this 
product describe how to edit your Windows 
registry. In most cases, we recommend that you 
use the Microsoft Regedit tool to perform your 
editing. Whatever tool you use, however, you 
should, before making any edits, make backups
of your registry and thoroughly familiarize
yourself with the editing tool and the 
registry editing process. The registry is a 
critical component of your operating system, 
and any mistakes made while editing it can 
cause your machine to stop functioning.


THIRD-PARTY PRODUCT NOTES 
AND KNOWN ISSUES
===============================================

The following items describe issues and problems
you may encounter when using Delphi 5 with other
tools and applications. Additional third-party
and external application issues may also appear 
in the "DELPHI 5 KNOWN ISSUES" section.

Installing Microsoft Data Access Components
-----------------------------------------------
[Enterprise edition only]
If you need to update your Microsoft Data 
Access Components (MDAC) to version 2.1.2
after installing Delphi, run MDAC_TYP.EXE 
from the \MDAC directory on your Delphi CD.

Uninstalling when McAfee virus scanner active
-----------------------------------------------
Because it normally scans "outbound files" 
(such as files being uninstalled), recent 
versions of McAfee virus scanner may cause long
delays during Delphi uninstallation. Windows NT
users can switch off this protection option by
right-clicking the VShield icon in the system 
tray, choosing Properties, then deselecting 
the "Outbound Files" option in the "Scan" 
group. Windows 95/98 versions of VShield do not
have the "Outbound Files" option, but users may
speed the uninstall by disabling "System Scan"
directly from the VShield tray icon.

Microsoft ImageList common control 
and video drivers
-----------------------------------------------
Some older video drivers (S3 Virge GX, Diamond 
Viper, Riva TNT, Matrox Millenium, and others) 
have trouble handling the quantity of images 
that the Delphi IDE's component palette places 
in its internal ImageList control. This can cause 
the component icons to appear shifted or corrupted 
in the IDE component palette. The solution is to 
contact your video card vendor for an updated 
video driver. At the time of this writing, all 
the video drivers known to exhibit problems with 
the Microsoft ImageList control have been updated 
with fixes by the video card vendors.

You can also work around this ImageList problem 
by reducing or disabling video hardware 
acceleration in your Windows configuration 
settings. For instructions, consult your operating
system and video hardware documentation.

ActiveX Wizard/licensing issue
-----------------------------------------------
[Enterprise, Professional editions only]
Delphi does not directly support the licensing
of ActiveX controls for Web deployment. 
License package (.LPK) files, which are 
required for runtime licensing of ActiveX 
controls, can only be generated by 
LPK_TOOL.EXE, a utility available in 
Microsoft's Internet SDK. For more information 
on the license-creation tool and how it is used, 
visit http://support.microsoft.com 
and search for "LPK".

Microsoft Transaction Server (MTS)
-----------------------------------------------
[Enterprise, Professional editions only]
If Microsoft Transaction Server (MTS) is 
installed before Delphi 5 is installed, the 
only preparation required is to set MTS POOLING
to TRUE in the Borland Database Engine (BDE) 
configuration file. Use the BDE Administrator 
to do this. The MTS POOLING setting is in the 
System/Init area of the configuration. This 
setting enables the BDE to use MTS pooling, 
improving the initial connection time when 
opening a database and allowing BDE database 
connections to participate in MTS transactions.

If MTS is installed after Delphi 5 has been 
installed, additional steps must be taken:
1. Copy DISP.DLL from the RUNIMAGE directory 
   on your Delphi 5 CD into the BDE directory 
   on the host computer.
2. Issue the following command:
    REGSVR32 <BDE directory>\DISP.DLL
3. In Transaction Server Explorer, install the
   BDE-MTS package:
     a. Right Click on Packages Installed.
     b. Choose New | Package.
     c. Choose Install pre-built packages.
     d. Add file DISP.PAK from the BDE 
        directory.
4. Set the value of  MTS POOLING to True in 
   the System/Init section of the BDE 
   configuration.

Microsoft icon cache prevents icon updating
-----------------------------------------------
If running Delphi 5 on a Windows 95 or 98 
machine on which Delphi 4 was previously 
installed (even if it is no longer present), 
the Delphi 4 icon set may persist in its 
association to Delphi applications, overriding 
the new Delphi 5 icon set. This is a known 
problem with Microsoft's icon cache updating
mechanism on Windows 95/98. To read about the
problem and its solution:
1. Visit the Microsoft KnowledgeBase at
   http://support.microsoft.com/search/default.asp
2. Choose Search All Microsoft Products from the
   listbox.
3. Choose the "Keywords" option. 
3. In Search Options (lower part of the page), 
   choose to search against Titles. 
4. Type the phrase "icons randomly change" 
   (no quotes) into the Question field. The search 
   should yield a number of article titles, any of
   which should lead you to a resolution.

IntelliMouse driver v2.2
-----------------------------------------------
Version 2.2 of the Microsoft IntelliMouse 
driver writes an invalid value to the registry
when it is installed. This default value can
cause some applications, including Delphi,
Outlook Express, and Windows Explorer, to
crash. To correct the problem:
1. Use Regedit to locate the key
   HKEY_USERS\.Default\Control Panel\
               Microsoft Input Devices\Mouse
2. If the value of TrayIcon is "ON", edit
   the value to make it "TRUE" ("FALSE"
   works as well).

ODBC certification
-----------------------------------------------
[Enterprise and Professional editions only]

The following ODBC drivers  are certified for 
use with Delphi 5 and BDE.

ODBC Driver Manager 3.5

Fully certified drivers:

ACCESS (Microsoft 3.40-Access 95 and 97)
FOXPRO (Microsoft 3.40)
MSSQL Server (Microsoft 3.00-Server version 6.5)
MSSQL Server (Intersolv 3.01-Server version 6.5)
ORACLE 7 (Intersolv 3.01-Server version 7.3)

Certified for basic functionality:

INFORMIX (Intersolv 3.01
    - Server version 7.20 and 9.11)
DB2 (IBMv5 client 6/98
    - No driver version info available: 
      tested against 2.12 and 5.0(UDB) server
SYBASE (Intersolv 3.01
    - Server version 11.02)

ODBC Driver Manager 3.51

Fully certified drivers:

ACCESS (Microsoft 3.51-Access 95 and 97)
FOXPRO (Microsoft 3.51)
MSSQL Server (Microsoft 3.6
    - Server version 6.5 and 7.0)
MSSQL Server (Intersolv 3.11
    - Server version 6.5 and 7.0)
ORACLE7 (Intersolv 3.11
    - Server version 7.3)

Certified for basic functionality:

DB2 (IBMv5 client 6/98
    - No driver version info available: 
      tested against 2.12 and 5.0(UDB) server
SYBASE (Intersolv 3.11
    - Server version 11.02)
ORACLE8 (Intersolv 3.11
    - Server version 7.3 and 8.04)


DELPHI 5 KNOWN ISSUES
===============================================
For additional late-breaking Delphi 5 usage 
notes, see the section "ONLINE HELP 
OMISSIONS, CORRECTIONS, AND 
CLARIFICATIONS" later in this document.

ADO issues
-----------------------------------------------
[Enterprise edition only]

When using TADOTable or TADODataSet, an error
may occur when retrieving a list of table names 
from Microsoft SQL Server 6.5. To correct the 
problem, you must install the latest 
SQL Server 6.5 Service Pack (currently 5a), 
or update the system catalog as described in 
the MDACREADME.TXT file that accompanies 
MDAC 2.1. 

When using the Filter property on the ADO
dataset components, ADO requires a space  
between operators and field names. 
For example,field>0 fails, field > 0 works.

You cannot open tables or procedures that 
contain mixed case names on Oracle servers 
unless the names containing lower case letters
are enclosed in quotation marks. Affects 
ADODataSet, ADOCommand, ADOTable, and 
ADOStoredProc objects.

The IndexName and Seek methods of TADODataSet 
currently only work with the Microsoft Jet 4.0 
provider when using a database file created with 
Access 2000.

The Oracle provider included with the MDAC runtime 
does not support Oracle 8 datatypes (CLOB, BLOB, 
NVARCHAR2, NCHAR, etc.).

When using the Merant (Informix 7, 9) provider, 
MSADO15.DLL generates an AV when working with
Stored Procedure parameters.

ADO does not support case-sensitive filters
or find operations.  Because of this, the
FilterOptions and LocateOptions on the ADO
dataset components do not respect the case
sensitive option and always return case-insensitive
results.

When opening tables or stored procedures on an 
Oracle server, you must put double quotes around 
any mixed case names as required by the server 
("TableName").

When using the ADO Dataset components on a 
MIDAS application server, ensure that the
Active property is set to false at design
time to ensure that any Refresh after
an update will return the correct data.

When using the TParameters.CreateParameters
method, ADO requires that the size parameter
be set to a value greater than zero if the
value parameter is null.

When using the Microsoft Jet 3.51 provider,
an error will occur if you bind values to
boolean columns using ftBoolean.  The problem
is corrected in the 4.0 provider.  You can
bind the parameters as ftInteger to workaround
the problem.

When using the pfXML option with the 
TADODataSet.SaveToFile method, you
must first install version 5.0 of Internet
Explorer in order to reload the data.  The XML
parser which is required to interpret the data
is not included with the 2.1 MDAC runtime.

MIDAS\InternetExpress
-----------------------------------------------
[Enterprise edition only]

There is a known design-time problem when 
building an Internet Express application 
that uses a local provider: Each time the project 
is reloaded, the XMLBroker Connected property 
is reset to False, and you must manually reset
it to True.

When a MIDAS server will not shut down as 
expected: 
A client Web application may not always be 
able to shut down a MIDAS server launched via 
an HTTP connection or via DCOM from an 
InternetExpress client unless the DCOM user 
account is set to "Interactive User" on the 
server machine. To set this permission, run 
DCOMCNFG.EXE on the server machine, choose 
your MIDAS server from among the listed 
Applications, press Properties, then 
Identities, and select Interactive User. In 
subsequent sessions, the server may be shut 
down as expected.

"Invalid Filename" is returned trying to 
Activate a ClientDataSet when:
-- A MIDAS server has a provider located on a 
   Novell network; or
-- A ClientDataSet attempts to connect to a 
   MIDAS server on another machine.
The solution to both of these situations is the
same as that described in the previous note 
(set the MIDAS server Application Identity 
to "Interactive User").

The Netscape browser does not support XML Islands,
and, as a result, will crash with an out-of-memory
error when the InternetExpress application 
accesses MIDAS data with a very large data packet.
This behavior also occurs if using Internet Explorer
without XML Islands support (if using Islands, 
it does not occur).

Current versions of the Netscape browser do not
support Unicode. Thus, if you input DBCS 
characters into a Dataset field, the characters
will not display correctly in a Netscape 
browser. This problem does not occur in 
Internet Explorer.

InternetExpress clients accessing multi-byte 
character set (MBCS) data from a MIDAS 
server will receive the error 
"<MBCS fieldname>:name not found in rowset"
unless the MIDAS server is running on an MBCS
operating system.

ActiveX imports
-----------------------------------------------
[Enterprise and Professional editions only]

If you import an ActiveX control and a _TLB.pas
file already exists with the same name as the 
imported control, you are asked if you want to 
overwrite the existing _TLB. If you choose to 
overwrite and continue, it may appear that the 
file was not overwritten (the behavior of what 
should have been the overwritten control 
remains in effect).

In fact, the overwrite does occur, but the IDE
will not recognize the new control until you 
close and then reopen the newly created 
_TLB.pas file (without saving it, since you've
already performed the overwrite).

ActiveX imports (Windows 98 only):

Importing certain OLE servers when running 
Delphi under Windows 98 will result in the 
generation of packages with invalid bitmaps. 
These bitmaps will be replaced with the default 
Delphi three-object icon when the package is 
installed on the component palette.

To get the correct icons, re-import the server 
under Windows NT and use the .dcr generated by 
that import, rather than the .dcr generated 
under Windows 98, when installing the package
onto the palette.

Frames
-----------------------------------------------
Multi-level references and indirect event 
calls are not automatically generated in 
nested frames. Such multi-level functionality
must be coded separately.

When creating templates from frames make sure 
the frame source is saved before creating the
template or adding the frame to the palette. 
Doing so will avoid later problems if the frame
is saved under a different name.

When using TChart components and frames on the 
same form, changes to the components are not 
inherited from frame to frame. 
Recommendation: Do not change TChart component
settings when using the components on forms 
with frames.

Cached updates and master-detail relationships
-----------------------------------------------
[Enterprise and Professional editions]
Cached Updates cannot be used effectively with
TQuery components when doing master-detail 
links (DataSource property). This is because 
the detail query is reexecuted each time the 
master record pointer moves. 

SQL Explorer and Sybase 11.5 
-----------------------------------------------
[Enterprise edition only]
When SQL Explorer connects to a Sybase 11.5 
server, the following problems occur:
-- The server type is shown as 
   "SYBASE: Unknown Version: Mapping error: 
   Bad template: SQL Server/([0-9]+)\."
-- If the text tab is selected for a table with
   a numeric field, a "Property Precision does 
   not exist" error message is generated.
-- The server displays only Columns, Indices 
   and Triggers in table trees.
Workaround for above three problems: 
edit DBX.DBI, located in your Delphi5/Bin 
directory, and change the line:
  SYBASE:IdentityRE=SQL Server/([0-9]+)\.
to (these two lines should be on one line 
in the DBI file): 
  SYBASE:IdentityRE=[SQL Server]
  [Adaptive Server Enterprise]/([0-9]+)\.

BLOB limitations
-----------------------------------------------
[Enterprise and Professional editions only]

When using ODBC, BLOB size is limited to 
1,000,000 (1 million, not 1 MB) bytes. 
Attempting to post a larger record generates an
"Invalid Blob Size" error.

You may experience more severe limitations 
using BLOBs with SQL Anywhere. When using 
that product, problems have been encountered 
when trying to read BLOBs as small as 24-32K 
in a dead query.

Images in a TTreeView
-----------------------------------------------
TTreeView cannot repaint a node's image when 
its ImageIndex is set outside of 
OnGetImageIndex (e.g., in a button click) 
and OnGetImageIndex is assigned (if the event 
handler is not assigned, it works correctly). 
This is due to a limitation in the TreeView 
control and is designed to avoid recursion. 
A simple workaround is to call 
TreeView.Invalidate after setting the 
ImageIndex.

RichEdit controls
-----------------------------------------------
If CoInitializeEx is called with 
COINIT_MULTITHREADED or CoInitFlags has 
been set to  COINIT_MULTITHREADED and you
have a form containing a RichEdit control, 
creation of the RichEdit control will fail. 
If you need to use the RichEdit control in a 
multi-threaded OLE server, subclass the control
and override CreateParams in order to set the 
correct style.

Overloaded routines and default parameters
-----------------------------------------------
Overloaded routines with default parameters are
not always handled correctly by the compiler. 
Overloaded procedures and functions that have 
default parameters should be converted to 
equivalent routines that are overloaded but do
not use default parameters.

For example, the following code:

  procedure Proc1(S: string; I: Integer = 0); overload;
  procedure Proc1(F: Float; I: Integer = 0); overload;

should be converted to:

  procedure Proc1(S: string); overload;
  procedure Proc1(S: string; I: Integer); overload;
  procedure Proc1(F: Float); overload;
  procedure Proc1(F: Float; I: Integer); overload;

The implementation of Proc1(S: string) 
would then be:

  procedure Proc1(S: string);
  begin
    Proc1(S, 0);
  end;

Project Browser
-----------------------------------------------
The References page of the Project Browser 
finds occurrences of most items, including 
properties and global routines, across all 
project source files. But it finds occurrences
of a method only in the unit where the method 
is declared. This limitation will be removed 
in a future release.

Docking issues
-----------------------------------------------
On a dockable form, TreeViews will lose their 
items when docking and undocking from a 
docksite parented by an MDI form. 
Workarounds:
1. Parent the TreeView to something other than
   the docking form (such as a panel).
2. Use the TreeView's FloatingDockSiteClass 
   form as the floating dock host.

Warning: Do not use duplicate menu names
-----------------------------------------------
If a form contains a menu control and all of the
names in the menu control are not unique, an 
error will occur if you use the form to create a 
new inherited form. The error will occur, for 
example, if two or more blank menu items exist.

Menu Shortcut Conflicts
-----------------------------------------------
Menu shortcuts in the IDE may conflict with 
system shortcuts and international character key
combinations. If you want to disable the Ctrl+Alt 
hot keys in the IDE, set this DWORD registry key:

HKEY_CURRENT_USER\Software\Borland\Delphi\5.0\
   Editor\Options\
NoCtrlAltKeys to "1"
  
BDE and related utility application issues
-----------------------------------------------
[Enterprise and Professional editions only]

A threading problem occurs if you set the 
session property sesCFGMODE2 to cfgmVirtual
and/or cfgmSession (though cfgmPersistent 
works). Specifying either of the two noted
settings can cause a GPF in your program.

A mismatch between Oracle client and server 
versions can cause BLOB and CLOB access 
problems. SQL Links is not certified to 
overcome this limitation. 
Details: BLOB and CLOB access problems will 
be encountered when an Oracle 8.1.5 client 
communicates with an Oracle 8.0.4 server.
(Delphi 5 is certified only with the Oracle 
8.1.5 client/Oracle 8.1.5 server configuration.)

Using Microsoft Access ODBC driver 
version 4.00.3711.08 with Delphi 5 and BDE 
causes text field lengths to be reported twice 
as long as they actually are. Earlier versions 
of the driver do not exhibit this behavior. 
Nor does the problem occur when ADO is used.

TStoredProc components that attempt to get an
spParamList value from an invalid stored
procedure will cause an AV in ORACLIENT8.DLL.
To avoid this problem, make sure the procedure
is valid on the server.

Using TQuery with Oracle 8 BLOBs and CLOBs
-----------------------------------------------
Accessing BLOB/CLOB in ORACLE 8 requires a 
LOB locator. The SQL statements for inserting 
LOBS using TQuery is as follows:

INSERT INTO LOBTAB ( F_BLOB, F_CLOB) VALUES 
( EMPTY_BLOB( ), EMPTY_CLOB() ) RETURNING 
F_BLOB, F_CLOB INTO :P1, :P2

Here, parameter P1, P2 should be bound as 
OraBlob and OraClob, respectively, and the 
BLOB values can be assigned to the parameters.
SQL Links internally gets the locators from 
the returning clause of the above query and 
populates the LOB.

Similarly, an update SQL statement would read:

UPDATE LOBTAB SET F_CLOB = EMPTY_CLOB( ) 
RETURNING F_CLOB INTO :P1

TQuery parameter binding --
MIDAS and ORACLE 8 CLOB and BLOB fields
-----------------------------------------------

Using Oracle 8.1.5 client/server:
If you attempt to set a CLOB to an empty value,
an AV may result when the CLOB is updated via
a TQuery parameter binding or through MIDAS.

Using Oracle 8.0.4 client/server:
An AV may result if you attempt to insert a new 
Record with MIDAS and then call ApplyUpdates 
without giving values to CLOB or BLOB fields.  

Workaround for both cases:
Use events to guarantee that CLOB and BLOB
fields have a non-null value.

Oracle 8, VARRAYs and ADTs
-----------------------------------------------
[Enterprise, Professional editions only]
An application can crash when opening an 
Oracle 8 table that contains a large VARRAY of 
ADTs. Oracle recommends using nested tables
instead of VARRAYs when such configurations are
required.


ADDITIONAL COMPATIBILITY NOTES
===============================================

The following items describe compatibility 
issues between Delphi 5 and earlier versions of 
Delphi, as well as between Delphi 5 and other 
products.

NOTE: The information below was confirmed late
in the development process and may not appear 
in the online Help system. For a more detailed 
discussion of this subject, see "Compatibility
Issues" in the Help Index.

DSGNINTF and deployment
-----------------------------------------------

DSGNINTF.DCU is no longer shipped with Delphi.
Thus, component developers should consider 
segregating design-time code into separate units 
from runtime code. Runtime code should not refer 
to those units.

If this approach is not feasible, you do have the
option of compiling DSGNINTF.PAS (located in
your \source\toolsapi\ directory). This should be
considered a stopgap measure, however, and may
not be available as an option in future releases.

You are also reminded that under the terms of
your license agreement, you are not permitted to
distribute DCUs based on source code owned by
Inprise Corporation, no matter how that code 
might be made available to you. For complete
details on licensing restrictions, see the
LICENSE.TXT and DEPLOY.TXT files that accompany
this release.

MIDAS.DLL replaces DBCLIENT.DLL
-----------------------------------------------
When redistributing MIDAS clients, you must
redistribute the new MIDAS.DLL with your
applications. This file replaces DBCLIENT.DLL
as the primary MIDAS support library.
(DBCLIENT.DLL is also supplied to provide 
support for earlier versions of MIDAS.)

Functions removed
-----------------------------------------------
The DBError and DBErrorFmt functions no longer
appear in DB.PAS.

Delphi 3 projects need STDVCL32.DLL
-----------------------------------------------
Projects created in Delphi 3 and earlier 
releases require the presence of STDVCL32.DLL
to enable their loading into Delphi 5.0. When 
the older project is saved in Delphi 5.0, it is
upgraded to use the new STDVCL40.DLL, and the 
older library is no longer required.

FIF libraries no longer available
-----------------------------------------------
The FIF libraries that were supplied in the 
\INFO\EXTRAS folder on the CDs of previous 
Delphi releases are no longer available due to
discontinued development and support by the 
vendor, Iterated Systems.

GraphicsServer component no longer included
----------------------------------------------
The GraphicsServer component (GRAPH32.OCX)
that shipped with earlier versions of Delphi 
is no longer a part of the product. Information 
about the GraphicsServer component is available 
from the vendor at http://www.graphicsserver.com/


ONLINE HELP OMISSIONS, 
CORRECTIONS, AND CLARIFICATIONS
===============================================

The following items describe late-breaking
features and elements that are either not 
covered or require correction or clarification 
in the online Help system that ships with 
Delphi 5. Most items include a title and
keyword that will help you locate the affected
topics.

Using CORBA
-----------------------------------------------
CORBA applications require an active TCP/IP 
stack to operate.

CORBA client and server applications that call 
or implement interfaces declaring OleVariants 
as method parameters are advised to add 
ShareMem as the first unit in the application's 
uses list. ShareMem is necessary to manage 
memory allocated to hold Pascal long strings.  
 
TADOConnection
-----------------------------------------------
Topic title/keyword: TADOConnection
New published property: KeepConnection
Description: Specifies whether an application
remains connected to a database even if no
datasets are open. For details, see the
similar property description at 
TDatabase.KeepConnection

TComponent
-----------------------------------------------
Topic title/keyword: TComponent
New public method: RemoveFreeNotification
Description: Disables destruction notification
after it has been enabled by FreeNotification.

TComponent.ComponentState
-----------------------------------------------
Topic title: TComponent.ComponentState
Keyword: TComponentState type
New value option: 
csDesignInstance  This is set on TForm, TFrame,
                  TDataModule, etc. at design 
                  time. It is always set with
                  csDesigning but, unlike 
                  csDesigning, is not set on the
                  sub-components. For frames, it is
                  set on design time frames but not
                  frames that are registered as
                  components.

TComServer
-----------------------------------------------
Topic title/keyword: TComServer
New public property: TComServer.UIInteractive
Description: Controls whether the server 
displays error messages to the user. Can be set
to False for COM servers running as a service.

TOwnerDrawState type
-----------------------------------------------
Topic title/keyword: TOwnerDrawState type
New optional values:
odHotLight     The item is highlighted when 
               under the cursor ("hot-tracked").
               Windows 98/2000.
odInactive     Both the item and the window 
               associated with the menu are 
               inactive. Windows 98/2000.
odNoAccel      Keyboard accelerator cues 
               (character underscoring) is not 
               applied when the control is drawn. 
               Windows 2000.
odNoFocusRect  Cues that normally indicate 
               focus are not applied when the 
               control is drawn. Windows 2000.
odReserved1    Not used.
odReserved2    Not used.

Updated declaration:
type TOwnerDrawState = set of (odSelected, 
odGrayed, odDisabled, odChecked,  odFocused, 
odDefault, odHotLight, odInactive, odNoAccel, 
odNoFocusRect, odReserved1, odReserved2, 
odComboBoxEdit);

Additional information:

If you have any code that type-casts the ItemState
field of a DrawItemStruct, you should change the
code accordingly.

Example:

  with Message.DrawItemStruct^ do
  begin
    State := TOwnerDrawState(WordRec(LongRec
	         (itemState).Lo).Lo);

Should now be:

  with Message.DrawItemStruct^ do
  begin
    State := TOwnerDrawState(LongRec(itemState).Lo);


TQueryTableProducer
-----------------------------------------------
Topic title/keyword: TQueryTableProducer
Limitation note:
TQueryTableProducer works only with TQuery 
components. It does not work with TAdoQuery or 
TIBQuery.

TAppletModule
-----------------------------------------------
Topic title/keyword: TAppletModule
Events link is missing. To view Help for 
events, search "TAppletModule" in the Help 
Index. Events (OnActivate, OnInquire, 
OnNewInquire, OnStartWParms, OnStop) are listed
along with the object's properties and methods.

Omission: Component Writer's Guide
-----------------------------------------------
Topic title: How do you create components?
Keyword: Creating components
Problem: Missing table
Missing table data:

To: Modify an existing component
Start with this type: Any existing component,
such as TButton or TListBox, or an abstract 
component type, such as TCustomListBox

To: Create a windowed control
Start with this type: TWinControl

To: Create a graphic control
Start with this type: TGraphicControl

To: Subclass a Windows control
Start with this type: Any Windows control

To: Create a nonvisual component
Start with this type: TComponent

Clarification: Debugger services
-----------------------------------------------
Topic title: Debugger services
Keyword: service applications, debugging
Step 2 of this topic describes adding a 
registry subkey with the full path to the 
debugger as the string value, but does not 
actually specify the path. The value is:

C:\program files\borland\delphi5\bin\delphi32.exe

Note that "C:\program files\borland\delphi5" 
is the default installation folder; if you 
installed to a different location, modify the 
string as needed.

Error: Code snippet won't compile
-----------------------------------------------
Topic title: Reading and writing strings
Keyword: Strings
The code snippet:

var
  fs: TFileStream;
  s: string = 'Hello';

should be written as:

var
  fs: TFileStream;
const
  s: string = 'Hello';
  
Correction in example topic: ContentType, 
ContentStream, SendResponse example
-----------------------------------------------
Accessible from example links in VCL topics:
TISAPIResponse.ContentType,
TISAPIResponse.SendResponse,
TCGIResponse.ContentType,
TCGIResponse.SendResponse,
TWebResponse.ContentStream,
TWebResponse.ContentType,
TWebResponse.SendResponse

The example topic noted above is incorrect in the 
online Help file. The corrected code appears
below. 
Note: This code segment is part of the
IServer demo project you'll find at
/demos/webserv. The corrected code can be found
in the MAIN.PAS file in that directory. 

procedure 
TCustomerInfoModule.CustomerInfoModuleGetImageAction
(Sender: TObject; Request: TWebRequest; 
Response: TWebResponse; var Handled: Boolean);

var
  Jpg: TJpegImage;
  S: TMemoryStream;
  B: TBitmap;
begin
  Jpg := TJpegImage.Create;
  try
    B := TBitmap.Create;
    try
      B.Assign(BioLifeGraphic);
      Jpg.Assign(B);
    finally
      B.Free;
    end;
    S := TMemoryStream.Create;
    Jpg.SaveToStream(S);
    S.Position := 0;
    Response.ContentType := 'image/jpeg';
    Response.ContentStream := S; 
      // do not free the stream because the response
      // object will handle that task.
  finally
    Jpg.Free;
  end;
end;

Correction: AutoHotKeys property value
-----------------------------------------------
[WHATSNEW.HLP]
Topic title: Miscellaneous VCL Enhancements
Keyword: VCL,enhancements
Detail:
The topic section "New Help hint and menu features"
states, "Setting the AutoHotKeys property to True 
causes the menu to maintain hot keys...remove 
duplicate hot keys, and add unique hot keys...."
Correction:
The property value should be maAutomatic, NOT True.

Correction: ValidHotkeys variable 
should be ValidMenuHotkeys
-----------------------------------------------
Topic title/keyword: ValidHotkeys variable
Correction: The correct variable name is
ValidMenuHotkeys.

TRegistry.Access enhancement
not noted in "What's New"
-----------------------------------------------
Topic title: TRegistry.Access
Keyword: TRegistry,Access
Detail: TRegistry.Access is a new property that
specifies the level of access to use when
opening keys with TRegistry, TRegistryIniFile,
or TRegIniFile objects. Among the advantages 
to using the Access property with those objects
is the ability to read HKLM on Windows NT
machines without Administrator privileges.
See the TRegistry.Access topic for additional
information.

Undocumented: ESafeCall exception
-----------------------------------------------
ESafeCall is raised when a routine has the
safecall calling convention but the application
can't provide the necessary error-handling. For
example, ESafeCall is raised when safecall is
used on a method that is not part of a dual
interface.
If you see this exception, you should either
use the ComObj unit--which handles safecall
correctly--or simply consider not using safecall. 

Correction to example in topic:
Supporting state information in remote data modules
-----------------------------------------------
Topic keyword: 
incremental fetching, stateless data modules

Corrected code (with changes noted):

TDataModule1.ClientDataSet1BeforeGetRecords(
Sender: TObject; var OwnerData: OleVariant);

var
  CurRecord: TBookMark;
begin
  with Sender as TClientDataSet do
  begin
    if not Active then Exit; //added
    CurRecord := GetBookmark; 
      { save the current record }
    try
      Last; {locate the last record in the new packet }
      OwnerData := FieldValues['Key']; 
         { Send key value to the application server }
      GotoBookmark(CurRecord); 
         { return to current record }
    finally
      FreeBookmark(CurRecord);
    end;
  end;

end;

TRemoteDataModule1.Provider1BeforeGetRecords(
Sender: TObject; var OwnerData: OleVariant);

begin
  with Sender as TDataSetProvider do // was TProvider
      if not VarIsEmpty(OwnerData) then //added
        if DataSet.Locate('Key', OwnerData, []) then
        DataSet.Next; //added
end;

Comment:
The key elements that distinguish this code from
the example in the Help file are the Active check 
on the client, the unassigned variant check 
on the provider, and the call to move next past 
the located value (without which the last record 
of the previous fetch is fetched instead).


Clarification: Converting MIDAS applications
------------------------------------------------
The following is provided to clarify and expand
upon the Help topic entitled "Converting MIDAS 
applications". The topic can be found in the
What's New section of the Help system (keyword
"MIDAS, upgrade issues"):

The architecture to support multi-tier database
(MIDAS) servers in stateless environments (such as
MTS) has changed in Delphi 5. This has advantages
over the previous architecture and offers a
significant increase in performance and
scalability by reducing message traffic. You will
need to update your MIDAS 1 and MIDAS 2
applications to work with MIDAS 3. 
Follow these steps to convert your MIDAS 1 or
MIDAS 2 applications to MIDAS 3:

1.  Open your MIDAS server.
2.  View the Type Library.
3.  Add the Borland MIDAS type library to the 
    Uses page of the server library properties. 
    In the Type Library Editor, select the Uses page, 
    then right-click and select Show All Type 
    Libraries.
4.  Remove the BdeProv unit from the uses clause
    of your remote data module.
5.  In the Type Library Editor change the Parent
    Interface of your server's interface to IAppServer
    (formerly IDataBroker).
6.  Write down the name of any property that
    returns an IProvider and note any other methods
    that use IProvider. IProvider is no longer
    supported, so delete all properties that return an
    IProvider.

Note: You need to rewrite methods that use
IProvider. These properties are added when you
export a provider and may include custom methods
that use IProvider as well.

7.  Save the type library.
8.  Open your RemoteDataModule.
9.  From the list that you created of old
    IProvider properties, make sure you have a
    TDataSetProvider for each of those properties. If
    any are missing, drop a TDataSetProvider and set
    its Name property to the old property name and
    connect it to the appropriate dataset.  You may
    have to change the name of both the dataset and
    the TDataSetProvider, since the old name came from
    the dataset itself, but now it will come from the
    TDataSetProvider. 

Note: If porting a MIDAS 1 application, you may
want to take this opportunity to convert your
master detail relations into nested datasets.

10. The provider's Reset method has disappeared.
    Any calls to Reset can be changed to 
    GetRecords(0,Recs, Ord(grReset)); 
    The provider's FetchData method has also gone 
    away. Replace calls to FetchData with 
    RowRequest(Packet, Ord(foRecord),EmptyParam);
11. For any TDataSetProvider that you don't want
    visible from the client, set TDataSetProvider's
    Exported property to False.
12. In the Code Editor delete the same IProvider
    properties from the data module that you deleted
    from the type library.
13. If your data module is derived from
    TDataModule, change it to derive from
    TRemoteDataModule.
14. Run the Socket Server and choose
    Connections|Registered Objects Only to disable
    added socket and web connection security. See
    Changes to MIDAS security for information on how
    to update your application to include this
    security.
15. Recompile the server.
16. Recompile the client.

Refer also to Changes to MIDAS support for
detailed information about the architectural
changes.

Note: Old get/set methods of type IProvider that
you replace with TDataSetProviders do not have to
be reimplemented. It's handled automatically as you 
add and implicitly export the TDataSetProviders.


DOCUMENTATION USAGE NOTES
===============================================

Print documentation/PDFs
-----------------------------------------------
The Tutorial section of the Quick Start manual 
included in the printed and online 
documentation is designed for Delphi Enterprise
and Professional versions only. Other parts of
the QuickStart book are applicable to all
editions of the product.

The complete Quick Start, Developer's Guide, 
and Object Pascal Language Guide (OPLG) 
sections of your online Help system are also 
available in print and Portable Document Format
(PDF) editions. The Quick Start book
accompanies all editions of Delphi, and 
the print version of the Developer's Guide is 
provided with the Enterprise and Professional 
versions only. The Quick Start (QS.PDF) and 
Developer's Guide (DG.PDF) PDFs are provided on
your Delphi installation CD (in the folder 
/Documentation), and the OPLG PDF is available
for download from the Delphi Documentation Web 
site at http://www.borland.com/techpubs/delphi.

The site also provides links to the Borland 
E-Commerce area, where you may purchase 
additional copies of the Developer's Guide 
and the OPLG.

Notes:

-- To read PDFs, you must have the Adobe 
   Acrobat Reader installed. An installer is
   available on the Enterprise and Professional
   edition CDs at \IB5\ADOBE\SETUP.EXE).
   Standard edition users can obtain the 
   Reader installation at:
http://www.adobe.com/prodindex/acrobat/readstep.html

-- Since online Help is produced later in the
   development process than printed books and 
   PDFs, the Help system will, in many cases,
   offer more up-to-date and accurate information
   than that found in supplied printed materials.

Windows API index and topics
-----------------------------------------------
Due to limitations in the indexing capabilities
of the Windows Help engine on Windows 95 and 
98 machines, Windows API Help topics do not 
appear in the Delphi Help index. However, these
topics are available from the Delphi IDE's 
context-sensitive Help system; if you select a 
Windows API function in the Code editor and 
press F1, the appropriate Windows Help topic 
will appear. To see an index of Windows API 
Help topics, access the Windows API Help 
directly from the Help menu.

BDE and other Delphi tools
-----------------------------------------------
To directly access Help for BDE topics 
(Enterprise and Professional editions only) and
other Delphi productivity tools, choose Delphi
Tools on your Help menu.

Note: Not all of the specified tools are 
included with all editions of Delphi. The main 
topic in the Delphi Tools Help file notes 
availability of each tool.

Openhelp usage notes
-----------------------------------------------
If you see a red "X" among the items in 
Openhelp's Contents, Links, or Index lists, it 
simply indicates that the Openhelp project is 
referencing files that either do not exist on 
your system, are not installed, or do not exist
in your edition of Delphi 5. To remove the item,
right-click on it and choose "Remove Item".

Downloading updated Help system components
-----------------------------------------------
The online Help files that accompany this 
release may be updated from time to time to 
provide corrections, clarification, additional 
examples and other new information. Updates 
will be available for download from the Delphi 
documentation Web site at
http://www.borland.com/techpubs/delphi


DELPHI ON THE WEB
===============================================

In addition to numerous private sites that 
offer Delphi information, instruction, and 
samples, the following Delphi/Inprise 
Web-based resources provide a continuous stream
of news, product information, updates, code, 
and other materials. You can connect to many of
these resources directly from the Delphi Help 
menu.

Delphi Direct [Help|Delphi Direct]
-----------------------------------------------
This IDE add-in resource provides an 
automatically updated list of links to the 
latest news, downloads and other information 
about Delphi and Inprise.

Code Central
-----------------------------------------------
The CodeCentral Repository is a free, 
Delphi-powered, searchable database of code, 
tips, and other materials of interest to 
developers. For details and registration 
information, visit http://www.borland.com/codecentral

The Borland/Inprise Web site
-----------------------------------------------

Borland/Inprise home page:
  http://www.borland.com or 
  http://www.inprise.com
  [IDE: Help|Borland Home Page]

Delphi home page:     
  http://www.borland.com/delphi/
  [IDE: Help|Delphi Home Page]

Delphi developer support:
  http://www.borland.com/devsupport/delphi/
  [IDE: Help|Delphi Developer Support]
  
Delphi updates and other downloads:
  http://www.borland.com/devsupport/
       delphi/downloads/
  
Delphi documentation site:
  http://www.borland.com/techpubs/delphi

Information for C++ developers:
  http://www.borland.com/delphi/cpp/

Information for Visual Basic developers:
  http://www.borland.com/delphi/vb/

Newsgroups:
  http://www.borland.com/newsgroups/

Electronic newsletter subscriptions:
  http://www.inprise.com/feedback/listserv.html
International list server:
  http://www.inprise.com/feedback/intlist.html

Worldwide offices and distributors:
  http://www.borland.com/bww/

Inprise FTP site (anonymous access):
  ftp.borland.com

TechFax
-----------------------------------------------
Technical documents are available via fax at:
  1-800-822-4269 (North America)


===============================================
Copyright (c) 1999 Inprise Corporation. 
All rights reserved.

