*********************************************************** DELPHI 4 RELEASE NOTES *********************************************************** This file contains last-minute information about Delphi 4 and additional information that enhances the usability of Delphi. We recommend you read this entire file before using Delphi 4. Certain portions of this file pertain only to some editions (Standard, Professional, Client/server, Enterprise) of Delphi 4. Wherever possible, when a topic concerns only specific editions this is also noted within the topic. Unless otherwise noted, all materials provided in this version of Delphi are copyright (C) 1983-1998 by INPRISE Corporation. TABLE OF CONTENTS ======================================================= 1. WHERE TO FIND INFORMATION 1.1 Information Files 1.2 Online Resources 2. CONTACTING INPRISE 2.1 Installation Assistance and Developer Support 3. CD-ROM AND INSTALLATION DIRECTORY OVERVIEW 3.1 CD-ROM directories 3.2 Installation Directories 4. DEMO APPLICATIONS 5. UTILITY PROGRAMS 6. DOCUMENTATION 6.1 Delphi 4 Help Files 6.2 Online Version of Printed Documentation 6.3 Help Updates 7. BDE AND SQL LINKS 8. INTERNATIONAL 9. MICROSOFT TRANSACTION SERVER (MTS) 10. KNOWN PROBLEMS 1. WHERE TO FIND INFORMATION ======================================================= 1.1 Information Files --------------------- This file, README.TXT, contains release notes for Delphi 4. See the file INSTALL.TXT (on the Delphi CD) for information regarding installing Delphi, uninstalling Delphi, and system requirements. See the file DEPLOY.TXT for information on redistributing Delphi applications. See LICENSE.TXT for information on licensing allowances and limitations for Delphi 4 and other INPRISE software bundled with it. See the online Help file DEL4NEW.HLP for new features in and compatibility issues with Delphi 4. For the Borland Database Engine (BDE) and SQL Links (the latter only in the Client/server and Enterprise editions of Delphi), the file BDEREADME.TXT contains release notes. The file BDEDEPLOY.TXT contains infor- mation on deploying BDE and SQL Links with appli- cations. Both files are installed in the main BDE directory. 1.2 Online Resources -------------------- You can get information from any of these online sources: 1.2.1 World Wide Web -------------------- Check INPRISE's Web site regularly. The Delphi Product Team will post white papers, competitive analyses, answers to frequently asked questions, sample applications, updated software, and information about new and existing products. You may want to check these URLs in particular: http://www.inprise.com/ (Main INPRISE Web site) http://www.inprise.com/delphi/ (Delphi product information) http://www.inprise.com/devsupport/delphi/ (Delphi Developer Support) http://www.inprise.com/devsupport/delphi/downloads/ (Updated Help, software, and other files) http://www.inprise.com/delphi/cpp/ (information for C++ programmers) http://www.inprise.com/delphi/vb/ (information for Visual Basic programmers) http://www.inprise.com/newsgroups/ (INPRISE-sponsored newsgroups, see below) 1.2.2 Newsgroups ---------------- INPRISE sponsors a variety of newsgroups where users can exchange information about INPRISE development tools and their use. For a complete list and information on connecting to the INPRISE news server, see the page at the URL: http://www.inprise.com/newsgroups/ In addition to the groups hosted by INPRISE, the following Usenet newsgroups are devoted to Delphi and related programming issues. (These newsgroups are maintained by users and are not official INPRISE newsgroups.) news:comp.lang.pascal.delphi.misc news:comp.lang.pascal.delphi.components news:comp.lang.pascal.delphi.components.misc news:comp.lang.pascal.delphi.components.usage news:comp.lang.pascal.delphi.components.writing news:comp.lang.pascal.delphi.databases news:comp.lang.pascal.delphi.advocacy news:comp.lang.pascal.delphi.announce news:alt.comp.lang.borland-delphi 1.2.2 FTP --------- ftp.inprise.com (Technical documents available by anonymous ftp.) 1.2.3 Listserv -------------- To subscribe to electronic newsletters, use the online form at: http://www.inprise.com/feedback/listserv.html or, for INPRISE's international listserver, http://www.inprise.com/feedback/intlist.html. 1.2.4 TECHFAX ------------- 1-800-822-4269 (North America) (Technical documents available by fax.) 2. CONTACTING INPRISE ======================================================= 2.1 Installation Assistance and Developer Support ------------------------------------------------- INPRISE offers a range of support services for Delphi 4 (and other tools). For information, see the World Wide Web site for Delphi Developer Support at the URL: http://www.inprise.com/devsupport/delphi/ For assistance outside of North America, contact your local INPRISE representative. For a list of offices and distributors world-wide, see the page at the URL: http://www.inprise.com/bww/ 3. CD-ROM AND INSTALLATION DIRECTORY OVERVIEW ======================================================= 3.1 CD-ROM directories ---------------------- The Delphi 4 CD-ROM includes the following files and directories. [root] Contains files used for installation and registration as well as these important documents: INSTALL.TXT Installation instructions. README.TXT Release notes, last-minute documentation, and a list of known problems. LICENSE.TXT The Delphi license agreement. DEPLOY.TXT Information about deploying Delphi applications. \DELPHI16 Delphi 1.0 (16-bit). \SQL16 Latest 16-bit SQL Links. \DOCUMENTATION Contains PDF format copies of the printed Delphi documentation. \INFO\EXTRAS Contains extra bundled software. \INFO\CBUILDER DEMO Demo copy of C++ Builder 3. \IB5 Contains the InterBase 5.1.1 Server. (Professional edition and higher.) \INSTALL Contains the Delphi 4 setup program and related files. \ISEXPRESS Contains InstallShield Express, a customized application deployment tool for Delphi 4, the BDE, and related software. \OLENT Contains OLEnterprise files. \RDEBUG Contains the files to install the Remote Debugger. \RUNIMAGE Contains a complete Delphi installation. All files are unpacked and in the default directory structure. \NETSCAPE Netscape. \IE40 Microsoft Internet Explorer 4.0. 3.2 Installation Directories ---------------------------- These are the directories (and their contents) assoc- iated with a full Delphi 4 installation. Some modules do not come with all editions of Delphi and these are noted where applicable. This file, DEPLOY.TXT, and the Delphi documentation refer to files in their locations relative to this default installation. Actual locations may vary as the Delphi installation allows you to con- trol where certain modules are installed. \Program Files\Borland\Delphi4\Bin (Delphi system files) \Program Files\Borland\Delphi4\Demos (Delphi demo programs, see "4. DEMO APPLICATIONS" below) \Program Files\Borland\Delphi4\Doc (.INT files with object declarations for objects without source .PAS files and the BDE API) \Program Files\Borland\Delphi 4\Help (Delphi online Help files) \Program Files\Borland\Delphi4\Imports (.DCU files for third-party products) \Program Files\Borland\Delphi4\Lib (Delphi library files) \Program Files\Borland\Delphi4\Objrepos (Object Repository) \Program Files\Borland\Delphi4\Ocx (Third-party OCX files) \Program Files\Borland\Delphi4\Slib (Debug versions of compiled source for use with debugging) \Program Files\Borland\Delphi4\Source (VCL source .PAS files, in Professional edition and above) \Program Files\Borland\Common Files\BDE (The Borland Database Engine system files; SQL Links system files, Client/server and Enterprise editions only) \Program Files\Common Files\Borland Shared\Data (Sample dBASE and Paradox tables) \Program Files\Common Files\Borland Shared\Debugger (The shared DLL for integrated debugger) \Program Files\Common Files\Borland Shared\Images (Sample image files, button glyphs, splash screen images, more) \Program Files\Common Files\Borland Shared\MSHelp (Microsoft SDK files) \Program Files\Common Files\Borland Shared\SampleDictionary (Sample data dictionary) \Program Files\Borland\Database Desktop (Database Desktop utility) \Program Files\Borland\vbroker (CORBA support) \Windows\System32 (Windows NT system files) 4. DEMO APPLICATIONS ======================================================= Sample programs, including the ones listed below, are installed with Delphi in the ..\Delphi 4\Demos\ direc- tory. To build these demos, compile the appropriate .DPR file. With client/server applications, be sure to build and run the server program before building the client. * CORBA demos only with Client/server and above \CORBA\ACCOUNT (Console CORBA client & server projects; how to use DII; same as VisiBroker's demo.) \CORBA\DATAMODULE (Using CORBA's datamodules; master-detail on CORBA server.) \CUSTOMDRAW (Using Windows custom draw support for TTreeView.) * Available only with Professional and above \DB\CSDEMOS * Available only with Client/server and above \DB\MTSPOOL (Using MTS pooling.) \DOCKING (Application template showing toolbar docking, tab docking, conjoinment docking, & hidden docksites.) * Internet demos only with Professional and above (The following are demo projects from NetMasters.) \INTERNET\DAYTIME \INTERNET\ECHO \INTERNET\FINGER \INTERNET\MSG \INTERNET\POP3 \INTERNET\SMTP \INTERNET\TIME \INTERNET\UDP \INTERNET\URL \INTERNET\UUE * MIDAS demos only with Client/server and above \MIDAS\AGGREGATE \MIDAS\ALCHTEST (TClientDataSet test application.) \MIDAS\BRFCASE (How to do briefcase with MIDAS.) \MIDAS\CUSTTREE (Server: master-detail with customer and orders tables. Client: displays data from server.) \MIDAS\INTRCPT (How to write interception DLL for the socket server.) \MIDAS\LOGIN (How to do login with MIDAS.) \MIDAS\POOLER (How to pool remote datamodules.) (Oracle 8 demos only with Client/server and above) \ORACLE8\ORTYPES (Oracle object relational types; can be used as a utility.) (The following demonstrate using rich-edit components in international situations.) \RICHEDIT\DEU \RICHEDIT\ENU \RICHEDIT\FRA \RICHEDIT\SVE \VIRTUAL LISTVIEW (Taking advantage of OwnerData property of TListView; creating a mini-explorer window.) 5. UTILITY PROGRAMS ======================================================= Delphi 4 comes with a number of helper, utility appli- cations. These application programs serve a variety of purposes, from debugging applications to working with data tables. These utility programs include: Resource compiler BRCC32.EXE, in ..\Delphi4\Bin Database Explorer SQL Explorer (Client/server & Enterprise editions) DBEXPLOR.EXE, in ..\Delphi4\Bin Database Desktop DBD.EXE, in \Program Files\Borland\Database Desktop GREP GREP.EXE, in ..\Delphi4\Bin Make utility MAKE.EXE, in ..\Delphi4\Bin MTS installation (Client/server & Enterprise editions) MTSINST.EXE, in ..\Delphi4\Bin Open Help OH.EXE, in ..\Delphi4\Bin Package Component Editor PCE.EXE, in ..\Delphi4\Bin SQL Monitor (Client/server & Enterprise editions) SQLMON.EXE, in ..\Delphi4\Bin TDump TDUMP.EXE, ..\Delphi4\Bin TRegSrvr TREGSRVR.EXE, ..\Delphi4\Bin 6. DOCUMENTATION ======================================================= 6.1 Delphi 4 Help Files ----------------------- The Delphi 4 on-line documentation consists primarily of the following Windows Help files: File Purpose ------------ ----------------------------------- DELPHI4.HLP Main Delphi Help DEL4COM.HLP Developing COM-based Applications DEL4CW.HLP Component Writer's Guide DEL4DAP.HLP Developing Distributed Applications DEL4DBD.HLP Developing Database Applications DEL4OP.HLP Object Pascal Guide DEL4PROG.HLP Programmer's Guide DEL4VCL.HLP VCL Reference DEL4NEW.HLP What's New and compatibility issues OPENHELP.HLP Customizing Help 6.2 Online Version of Printed Documentation ------------------------------------------- For your convenience, Acrobat versions of the document ation (except the VCL Reference) are provided. Use the provided Acrobat Reader to view the files. In addition to the reader, the following files are provided: DG.PDF Acrobat version of the Developer's Guide. OPLG.PDF Object Pascal Guide and Object Pascal Help. QS.PDF Quick Start manual. READRTIP.PDF Tips for using the Acrobat Reader. STARTUP_DELPHI4.PDF The main menu and start-up files. Use this file to access all other PDF files. These Acrobat files are located on the Delphi 4 CD in the \Documentation directory. 6.3 Help Updates ---------------- TCustomListView --------------- TCustomListView.OwnerDataFetch has an undocumented parameter: Request. The Request parameter specifies which properties of the Item object the list view is expecting to be filled-in. irText corresponds to TListItem's Caption property, irImage to its Image property, irParam to its Data property, irState to its Cut, DropTarget, Focused and Selected properties, and irIndent to its Indent property. The syntax prototype should be: TItemRequests = (irText, irImage, irParam, irState, irIndent); TItemRequest = set of TItemRequests; function TCustomListView.OwnerDataFetch(Item: TListItem; Request: TItemRequest): Boolean; virtual; Windows API Help ---------------- For the latest information on the Windows 32-bit API, refer to the Microsoft Developer Network (MSDN) Web site. The Run ToolBar Button Drop Down List ------------------------------------- The Debugger Run toolbar button now has a drop down list that will allow you to change what the active project/process is. If you are debugging more than one project and you want to switch to a process that is not currently active, click on the little down arrow in the Run button and select the EXE you want to become active. This will not run the EXE just activate it. If the EXE is not currently stopped in the debugger selecting it will make its project the active project in the Project Manager. Quick Start Manual Errata ------------------------- On page 3-6, step 4 says to set TDBGrid properties to anchor the grid to the form and set the Constraints subproperties AnchorHorz and AnchorVert to akStretch. Correction: Anchors is a separate property and step 4 should direct you to set all Anchors subproperties (akLeft, akTop, akRight, and akBottom) to True. Page 5-7 states incorrectly refers to package files using the extension .DPL; should be .BPL. Also, on the same page, there is a reference to the file VCL30.DPL; this should be VCL40.BPL instead. Developer's Guide Errata ------------------------ On page 49-20, in the example at the top: TransactionContextEx.Abort should be... TransactionContextEx.SetAbort TransactionContextEx.Commit should be... TransactionContextEx.SetComplete What's New Help File Errata --------------------------- New UseSystemFont property for TStatusBar. Specifies whether the status bar uses the system font. As the default for this property is True, it can impact legacy applications by causing the TStatusBar to use the system font. BDE: New Oracle 8 REF Field Property, curGETREF ----------------------------------------------- After inserting a record, the object ID for the newly inserted record can be obtained by allocating space (the iLen of the parent's REF field), and passing this into DbiGetProp(). DbiGetProp( hCur, curGETREF, pOBJECTID, refSize, &iObjectLen ); BDE: New REF Field Property, curREFINSERTTABLENAME -------------------------------------------------- When inserting records with a cursor opened with DbiOpenRef(), BDE needs to know the name of the stand- alone table into which you wish to insert the record. If this property has not been set, an error will occur. DbiSetProp( hCur, curREFINSERTTABLENAME, (UINT32) ); 7. BDE AND SQL LINKS ======================================================= See BDEREADME.TXT (in the BDE directory) for release notes for the Borland Database Engine (BDE) and SQL Links (the latter only available with the Client/server and Enterprise editions of Delphi). See BDEDEPLOY.TXT (in the BDE directory) for specific information regarding redistributing the BDE and SQL Links with Delphi applications. 8. INTERNATIONAL ======================================================= 8.1 Upgrading Arabic and Hebrew Support --------------------------------------- Middle East language support has been added to Delphi. Users of Delphi 3 Arabic or Delphi 3 Hebrew Enablement products should note that the old Arabic and Hebrew properties have been combined to a single property called BiDiMode, and there is a new property called ParentBiDiMode. See the online help for details. If you open an old project in Delphi 4, Delphi displays an error message stating "Class T... not found". Either select "Ignore" or "Ignore All". Once the Form is displayed, the old Arabic/Hebrew components are not displayed. Add the Delphi components in the appropriate places, update the BiDiMode fields, relink the event handlers and save the project. 8.2 Changing keyboards for BiDi support --------------------------------------- Switching bidi mode does not change the keyboard. You can do this for any control that has an OnEnter event. Set the OnEnter event to use this method: procedure TForm1.Edit1Enter(Sender: TObject); begin if Sender is TWinControl then with Sender as TWinControl do if UseRightToLeftReading then ActivateKeyboardLayout(...) //bidi keyboard else ActivateKeyboardLayout(...) //other keyboard end; 9. MICROSOFT TRANSACTION SERVER (MTS) ======================================================= If Microsoft Transaction Server (MTS) is installed before Delphi 4 is installed, the only preparation needed is setting MTS POOLING to TRUE in the Borland Database Engine (BDE) configuration file. Use the BDE Administator 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 4 has already been installed, additional steps must be taken. 1. Copy DISP.DLL from the RUNIMAGE directory on the Delphi 4 CD into the BDE directory on the host computer. 2. Issue the following command: REGSVR32 \DISP.DLL 3. In Transaction Server Explorer, install 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. 10. KNOWN PROBLEMS ======================================================= Packages and ISAPI DLLs ----------------------- The ISAPI/NSAPI WebModule-based DLL's cannot be used when compiled with packages. Workaround: remove INET40 and INETDB40 BPLs from the project. InterBase Installation ---------------------- Because the InterBase install does not remove registry entries and services completely, an error will be seen at the next reboot after uninstall: "Unable to start one or more services". Suggested workaround: run Control Panel | Services and turn off automatic start for InterBase Server. MTS --- After CoInitialization/CoUninitialization have been called, CoInitialization cannot be called again. Once CoUninitialization has been called, your application no longer executes in the MTS runtime environment. There is a known problem with using the client CreateTransaction/CreateTransactionEx mechanism for controlling MTS transactions. The BDE is not reenlisted once a transaction is committed or rolled back. Workaround: you must: 1. On the client side, call CreateTransaction and ITransaction.CreateInstance after each commit or rollback. 2. On the server side, close and reopen the database for each commit or rollback. Oracle 8 -------- If using a TTable as TProvider.DataSet, the ADT member fields in the TClientDataSet will by default be required. To modify this, use the Fields Editor to make persistent TFields for all fields in the TTable and then set the bRequired property for each ADT member to False. When working with MTS, OBJECT MODE (Oracle 8 driver in BDE configuration) should be set to FALSE. Partition tables are not supported. REF IN OBJECT VIEWS: REF data type which has a size greater than 200 bytes is not supported in this release. This will happen when you have an ORACLE 8 object view created from a table with the key field greater than 25 bytes. TDBGrid may have difficulty displaying data when the associated dataset consists of tables nested too deeply (generally, 5 or more levels of nesting). Oracle 8 client does not work correctly on Win98. Attempts to use client utilities raises a dialog box: "Some features of Oracle Version 8 may not run correctly in Windows 98. For possible updates please check the Oracle web site". Delphi will raise BDE error "Cannot load driver". The following tools do not fully support Oracle 8 object field types: Database Desktop Data Pump QuickReport components TeeChart component DataSetTableProducer and QueryTableProducer SQL Builder Decision Cube components Data dictionary Database Explorer Database Form Wizard COMCTL32.DLL Versions --------------------- Using an older version of COMCTL32.DLL than is installed with Delphi 4 will cause problems with components like Cool Menus and TToolButton. Installing some programs (like Microsoft Internet Explorer 3.02) will cause COMCTL32.DLL to be overwritten with an older version. Use the update program 40COMPUPD to replace it with the later version and prevent these problems. Code Explorer/Class Completion ------------------------------ Some default key combinations may conflict with key combinations defined in alternate Editor SpeedKey settings. For example, Shift+Ctrl+UpArrow conflicts with SpeedKey a key combination for Brief and Epsilon. CORBA/OSAGENT.EXE ----------------- A CORBA server will crash if OSAGENT is not already running. Start OSAGENT as a service under NT or with a -C flag when run as a console. Without the flag the application will terminate in 10 seconds. CORBA/IDL Generation -------------------- When clicking on the Export button to generate IDLs, the names of interfaces in the generated IDL are not fully qualified. You need to manually update the IDL file. For example: IDataBroker should be updated to StdVCL::IDataBroker IProvider should be updated to StdVCL::IProvider DisableControls Method ---------------------- Normal behavior note. The DisableControls method will also disable active Master-Detail links. Also, if you set BlockReadCount instead of calling DisableControls, then only the detail datasets get updated as you scroll through the dataset, not data-aware controls. Affects all components that can effect Master-Detail links and can use DisableControls. TChart/DbChart -------------- Changing a primary index field to a duplicate value (key violation) and then hitting the Escape key moves the active record off of the record that was just being modified if a TDBChart is hooked to the same table. A workaround is to use two events of the dataset: Var bb:TBookMark; procedure TForm1.Table1AfterPost(DataSet: TDataset); begin { go to current record... } Table1.GotoBookMark(bb); Table1.FreeBookMark(bb); end; procedure TForm1.Table1BeforeEdit(DataSet: TDataset); begin { get current record... } bb:=Table1.GetBookMark; end; Packages -------- If you have created your own design-time packages in an earlier version of Delphi or C++Builder, they must be rebuilt under Delphi 4 before they can be installed into Delphi 4. The package format has been changed in order to identify the producer of a package (C++Builder 3, Delphi 3, Delphi 4, etc.). Any user packages built with earlier versions will not be installable (until rebuilt) because they do not contain this information. Constraints/Persistent Fields/TClientDataSet -------------------------------------------- Constraints on persistent fields for a TClientDataSet are ignored. To use constraints with a TClientDataSet, place them on a TTable or TQuery that the TProvider uses to populate the TClientDataSet. MTS Pooling Demo ---------------- Closing the DB\MTSPool demo gives an Runtime error 216. Workaround is to do the following in the MTS explorer: 1. Go to Computers 2. Right-click on "My Computer" 3. Select Stop MS DTC 4. Right-click on "My Computer" 5. Select Properties 6. In the "Advanced" tab, press the "Reset Log" 7. Right-click on "My Computer" 8. Select "Shut Down Server Processes" 9. Right-click on "My Computer" 10. Select "Start MS DTC" Variants and 64-bit Integers ---------------------------- Round & Trunc return an Int64 type. However, Variant is not compatable with Int64. In order to convert to a Variant you must go to a comp then to a Variant. You cannot typecast the Variant to a Int64. This can cause problems and backward compatability issues since push and pop require a variant value. Menu Short-cut Conflicts ------------------------ Menu short-cuts in the IDE may conflict with system short-cuts and international character key combinations. If you want to disable the Ctrl+Alt hot keys in the IDE, set this string registry key: HKEY_CURRENT_USER\Software\Borland\Editor\Options\ NoCtrlAltKeys to "1" COM/ActiveX initialization -------------------------- The placement of COM/ActiveX initialization in Delphi has changed in this version. Prior versions initialized COM (through CoInitialize) in the initialization section of the ComObj unit. COM initialization is now accomplished during the call to Application.Initialize. Therefore, COM applications that do not call Application.Initialize must be changed so that it is called prior to any calls to COM runtime or interface methods. Likewise, calls to COM functions or interface methods in unit initialization sections must be changed to hook into Application.Initialize. This is only necessary in .exe projects, not .DLL (library) projects. Threading Model support ----------------------- Out of process (.EXE) servers that are to support the Free or Both threading models on the primary thread require that the global variable CoInitFlags be set to COINIT_MULTITHREADED. This must be done in the initialization section of any unit in your project or in the project file prior to the call to Application.Initialize. Cached Updates and Master-Detail Relationships ---------------------------------------------- Cached Updates cannot be used effectively with TQuery components when doing master-detail links (DataSource property). This is because the detail query is re- executed each time the master record pointer moves. BDEINST.TXT File ---------------- The text file BDEINST.TXT contains the wrong FileVersion number for the BDEINST.DLL, showing 4.1.5.4 instead of 5.0.0.38. Client Dataset/Aggregate Fields ------------------------------- There are known problems with adding and activating aggregate fields after the client dataset has been activated. It is best to add all needed aggregate fields before activating the client dataset. ======================================================= Unless otherwise noted, all materials provided in this release are Copyright 1983 - 1998 by INPRISE Corporation. ======================= END ===========================