Vous êtes sur la page 1sur 26

===============================================

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.