=============================================== 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 \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 ":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.