/*****************************************************************/
                  Welcome to Borland C++ Release 5.01
                  ----------------------------------

This README file contains important information about Borland C++.
For the latest information about Borland C++ and its accompanying 
programs, read this entire file.

For IMPORTANT product updates and technical information... 
 
Borland highly recommends that you investigate one of the following 
resources as soon as you have installed Borland C++ 5.01: 
 
World Wide Web:  http://www.borland.com/cpp/patchs.htm 
CompuServe:      GO BCPP, section 3, "From Borland" 
FTP:             ftp.borland.com 
BBS:             (408)431-5096. 8-N-1 (I bits, No parity, 1 stop bit) 
Listserv:        listserv@borland.com  Send an email message 
                 containing this text: 
                                    
     SUBSCRIBE<space>BCPP<space>FIRSTNAME<space>LASTNAME 
 
This is crucial to our efforts to provide you with the most 
comprehensive product information, updates, and service possible with 
this new release of Borland C++. 

------------------------
Visual Database Tools users should also read VDBT.WRI.
CodeGuard users should also read CGREADME.TXT.
Turbo Debugger users should also read TD_RDME.TXT.

--------
CONTENTS
--------
1. How to Get Updates and Assistance
2. Installation and Update
   a) Uninstalling Earlier Versions
   b) Disk Space Requirements for Release 5.01
   c) Installing Borland C++ 5.01
3. New Features
4. Important Information
   a) BOOL and bool Types in ObjectWindows 5.0
   b) Integrated Debugger
   c) Include Files with No Extension
   d) Out of Memory and MAKESWAP
   e) Building 16-Bit Applications in Windows 95
   f) NOEHxx Libraries
   g) Declarations in Conditions
   h) Name Mangling
   i) Pragma to Support Anonymous Structs
   j) Compiler Error Messages
   k) Changes in the Semantics of C++
   l) BCC32i.EXE, 32-bit Optimizing Compiler
   m) Borland Database Engine (BDE)
   n) International Codepages
   o) Running OLE Applications under Windows NT
   p) Integrated Resource Workshop Notes
   q) Installing TASM 5.0 after Borland C++ 5.01
   r) Borland Visual Database Tools
   s) Accelerated Keyboard Setting
   t) Using Experts with VDBT Controls and Classes
   u) Previewing VBX Controls
   v) Naming Conflict Between OLE and BIVBX.H
   w) Microsoft Foundation Classes (MFC) Info
   x) 

5. Important Information for the Development Suite
   a) PVCS Version Manager
   b) CodeGuard and JAVA

------------------------------------
1. How to Get Updates and Assistance
------------------------------------
If you have problems, read the HELPME.WRI and other files 
in your DOC subdirectory and check online Help. If you still 
need assistance, help is available from the following sources:

1. Borland offers a wide variety of Technical Support plans
   providing a range of assistance from installation and general
   usage of Borland C++ to language syntax, programming, and
   debugging help. For information about these support programs,
   call 1-800-523-7070.

2. For immediate assistance with everything from configuring Borland 
   C++ to C++ programming or debugging, call our C++ Programmer's 
   Advisor Lines ($2/minute, first minute free):

   * Windows / Win32: 1-900-555-1002 or 1-800-782-5558 (MC/VISA)
   * DOS: 1-900-555-1004 or 1-800-368-3366 (MC/VISA)

   For assistance outside North America, see #9 below or contact 
   your local Borland representative.

3. For the latest updates to Borland C++, see Borland Online at
   the URL http://www.borland.com.  Also

       Patch page:      http://loki.borland.com/cpp/patchs.htm
   Tech Info page:      http://www.borland.com/TechInfo/
         C++ page:      http://www.borland.com/TechInfo/cpp     
   Bug submission page: http://loki.borland.com/bugs

4. For online access to the Borland CompuServe forums, with their 
   libraries of technical information and answers to common 
   questions, type:

   GO BCPP      - for questions related to C/C++ programming
                  languages and Borland's programming tools
   GO BDEVTOOLS - for questions about the Borland Database Engine
   GO BCPPLIB   - for questions about ObjectWindows Library, STL,
                  and other Borland class libraries, and the 
                  Windows API.

   If you are not a member of CompuServe, see the enclosed
   special offer, and write for full details on how to receive
   a free IntroPak containing a $15 credit toward your first
   month's online charges.

5. Borland's TECHFAX service: Call 1-800-822-4269 for a FAX
   catalog of technical document entries. For assistance outside 
   North America, contact your local Borland representative.

6. Borland DLBBS: Dial (408) 431-5096 (up to 9600 baud, 8-N-1)
   for a host of free technical documents and example programs.

7. Technical information on Borland C++ is available on the 
   Internet via anonymous ftp at our ftp site ftp.borland.com.

8. Subscribe to Borland's free electronic newsletter and get 
   regular updates on up-to-date technical tips, patch 
   notifications, bug fixes, and product releases. Send your full
   name and address via electronic mail to tech-info@borland.com.

9. For help outside North America:
   Australia       1 800 641 144
   Austria         +49 (0) 8995914705
   Belgium (NL)    +32 (0) 27298022
   Belgium (FR)    +32 (0) 27298035
   Czech Republic  +42 (2) 6272135
   Denmark         +45 (0) 45762313
   Finland         +358 (09) 04209792
   France          +33 (1) 41377019
   Germany         +49 (0) 8995914705
   Iceland         +47 (0) 22250017
   Ireland         +44 (0) 1256373479
   Italy           +39 (2) 57303203
   Netherlands     +31 (0) 30 833730
   Norway          +47 (0) 22250017
   Portugal        +34 (1) 6618091
   South Africa    +27 11  7894316
   Spain           +34 (1) 6618091
   Sweden          +46 (0) 86297520
   Switzerland     +49 (0) 8995914705
   UK              +44 (0) 1256373479

---------------
2. Installation
---------------
IMPORTANT!
Do not install Borland C++ 5.01 over previously installed Borland
C++ directories. The files in this distribution will not work with
previously shipped tools and libraries.

   a) Uninstalling Earlier Versions
   --------------------------------
If you are running Version 4.5 or earlier, you need to 
delete the old version of Borland C++ from your system before 
installing Version 5.01. You also need to delete all references 
to outdated Help files from your WINHELP.INI file in your WINDOWS 
directory. Also, if you have WinRun in your startup group, unload it 
before installing Borland C++ 5.01.

If you are running Version 5.0, copy the latest uninstall program, 
BC5RMV.EXE, from the CD to your current BC5 directory, then run 
uninstall, before installing 5.01.

If you ignore the previous warnings and install Borland C++ 
5.01 over an existing 5.0 installation without uninstalling first, 
you must delete all of the hidden .GID files in the BC5\HELP 
directory before using the online Help system again. Otherwise, 
you will see a gray dialog with an OK and Cancel button and no error 
message when you try to use Help.  Also delete the following:

  \bc5\script\*.spx
  \bc5\bin\bcwdef.*
  \bc5\bin\bcconfig.bcw


   b) Disk Space Requirements for Release 5.01
   -------------------------------------------
With enhancements (primarily the addition of MFC), 
Borland C++ 5.01 has the following disk space requirements:

Borland C++ 5.01  230MB
Borland C++ Development Suite 250MB
Borland C++ Design Tools  260MB

Note that the exact amount of disk space needed on your 
system can vary greatly depending on the cluster size on 
your hard disk. You will need more disk space for disks 
that use larger cluster sizes (usually on larger capacity disks).


   c) Installing Borland C++ 5.01
   ------------------------------
If you are updating Borland C++, refer to the previous section.

To install Borland C++ 5.01, run \SETUP\BC5\SETUP.EXE.
To install the Borland Development Suite (both with or without 
Design Tools), run \SETUP.EXE (in the root of the CD).

If you need to use the Borland Power Pack for DOS, use it with
Borland C++ 4.52 (also provided with this release). It is not 
compatible with Borland C++ 5.0 or 5.01.

Also, be particularly careful when using object files and libraries
from earlier Borland C++ versions with binaries created with this
release. Several potential problems may occur when linking with old
objects or libraries. Exception handling won't work correctly 
(destructors won't get called) when an exception firing causes 
a pre-BC4 stack frame to unwind.

We recommend that you do not install Borland C++ to a path that
contains spaces or long file names.

For more information about installing Borland C++ 5.01, refer 
to INSTALL.TXT, which can be found in the following locations:

* Borland C++ CD-ROM (\BC5\INSTALL.TXT)
* Borland C++ floppy disk 1 (INSTALL.TXT)


---------------
3. New Features
---------------
This section briefly lists new features of Borland C++ 5.0 and 5.01. You 
can find details on the new features in online Help. Look for "What's 
New" in openhelp.hlp or look in the Help index.

The following features are new in Borland C++ 5.0:

* ObjectScripting for customizing the IDE (See BC5\SCRIPTS\EXAMPLES)
* Borland C++ Add-On Environment for Java
* Visual Database Tools (See VDBT.WRI)
* Microsoft Foundation Classes (MFC) Included 
* C++ Standard Template Library included (32-bit only)
* New 32-bit Optimizing Compiler (BCC32i.EXE)
* New ObjectWindows classes (common controls, WinSocks, docking, shell)
* Asynchronous (Background) builds (Options|Environment|Process Control)
* New Compiler Options (-fp, -OI, -OM, -OS, -VC, -Vd, -Ve, -VF)
* Pentium Scheduler Optimization
* New TLINK and TLINK32 Command-line Options
* 32-bit hosted IDE
* IDE Add-on Interfaces (See BC5\DOC\ADDON.TXT)
* Turbo Debugger for Windows works under Windows NT
* New .DEF Statements
* OCX Container Support in OCF (See \EXAMPLES\OWL\TUTORIAL\STEP18)
* New Win32 SDK tools in SDKTOOLS directory
* New C++ keywords (__declspec, bool, mutable, explicit, typename)
* New macros for portability and compatibility
* Integrated Resource Workshop
* Integrated 32-bit debugger with CPU view support
* New MAKE Preprocessing Directive: !CMDSWITCHES
* New startup code: c0d32dyn.obj
* Updated Help files
* New examples
* Borland C++ Development Suite available
  - CodeGuard 16/32
  - InstallShield Express
  - PVCS Version Manager
  - AppAccelerator for Borland C++ Add-On Environment for Java

The following features are new for Borland C++ 5.01:

* OPENHELP.EXE: a way to control default searches in Help
* Visual Database Tools support in ClassExpert
* Resource Workshop enhancements:
  - Undo/Redo for the Dialog editor
  - Dialogs previewed visually except in case of error
  - VBX preview switch added (see 4u below)
* Integrated debugger enhancements:
  - Follow command for navigating to specific addresses
  - Stop on All C++ or OS exceptions or if destructor is called
  - Thread support in inspectors and editors
  - Better cracking of Windows messages and message parameters

------------------------
4. Important Information
------------------------
This section contains important information that may not be found in
the manuals, online Help, or online text files. Reading this material
is helpful for preventing potential errors.

   a) BOOL and bool Types in ObjectWindows 5.0
   -------------------------------------------
   ObjectWindows now uses the C++ bool type that Borland C++ 
   supports. In version 2.5, bool was simulated via an enumeration. 
   Because enums and integers have the same size by default, 
   ObjectWindows made 'bool' and 'BOOL' interchangeable.

   With the new support for 'bool,' the two types are now
   unique and distinct. This change may require that you update your
   ObjectWindows code. For example, virtual methods returning 'bool'
   (such as TWindow's CanClose) must match the exact signature
   defined by the library.

   Another instance of this problem is with BC4.02-generated AppExpert 
   applications that support printing. In version 5.0, you may see 
   the error:

      Virtual function 'function' conflicts with base class 'class'

   You can fix this by changing BOOL to bool.

   b) Integrated Debugger
   ----------------------
   The integrated debugger in Borland C++ is for 32-bit programs
   only. Use Turbo Debugger for Windows (TDW) for 16-bit Windows
   debugging and TD for 16-bit DOS debugging.  You can launch TDW 
   or TD from the IDE by choosing Tools|Turbo Debugger. 

   Due to Windows 95 limitations, hitting a breakpoint in a 
   WM_SIZE handler may result in unexpected mouse behavior.
   
   Also due to Windows 95 limitations, while you can run more 
   than one process in the debugger, you can only have one
   process stopped at a time.  If a given process is stopped 
   (such as at a breakpoint) and a breakpoint (or other stop
   condition) is encountered in another process, you can't 
   debug the second process until you set the first process 
   running. Likewise, you can't step more than one process 
   at a time.

   QEMM Version 8 is not compatible with the integrated debugger.

   c) Include Files with No Extension
   ----------------------------------
   To support header names for the C++ Standard Library, 
   the following changes are made to names of #include files
   with no extension:

      * #include file names of 8 characters or less are automatically
        given a .h extension; for example, string is changed to
        string.h
  
      * #include file names greater than 8 characters are truncated
        to 8 characters and automatically given a .h extension;
        for example, algorithm is changed to algorith.h
   
   File names with extensions and file names with only a dot (.)
   extension are not affected. The result is that you can include the 
   standard headers such as <string> and <algorithm> and the compiler 
   correctly maps them to the appropriate .H files.

   The documentation for the C++ Standard Library shows the header file 
   syntax that is specified by the ANSI C++ working paper. To use the 
   Standard Library header files, you should use the syntax as shown 
   in the documentation.  Do NOT add a .h extension or modify the 
   header file names.

   When the compiler determines that you are using the Standard Library
   header files, the __USING_STD_NAMES__ macro is defined.

   d) Out of Memory and MAKESWAP
   -----------------------------
   For DOS command-line users only:
   If you get "Out of Memory" errors from DOS when running the
   command-line tools, or if you have only 8MB of RAM and have
   out-of-memory problems building and using 32-bit applications,
   create a swap file with the MAKESWAP utility. Note that this
   applies to DOS only, not to DOS boxes opened under Windows.
   MAKESWAP takes the size of the file to create in KBytes. For
   example:

      MAKESWAP 12000

   creates a 12MB swap file in the current directory called EDPMI.SWP
   for use by Borland command-line tools. To enable the swap file,
   use the DPMI32 environment variable by issuing the following
   command at the DOS prompt:

      set DPMI32=SWAPFILE <location of swap file>\EDPMI.SWP

   You must clear this environment variable by issuing the command

      set DPMI32=

   before running other 16-bit DPMI-hosted executables, such as
   Borland C++ 3.1 command-line tools.

   e) Building 16-Bit Applications in Windows 95
   ---------------------------------------------
   When you build 16-bit applications in the IDE, a process called
   CapDos32 remains in memory.  If you view PVIEW.EXE, it shows 
   these processes as WINOLDAP.  

   To make these processes unload themselves after 16-bit builds,  
   select \WINDOWS\SYSTEM\CONAGENT.EXE, select File | Properties, and 
   check Close on exit on the Program page. To avoid running out of 
   memory while linking 16-bit applications, set all memory choices 
   to Auto on the Memory page of the CONAGENT.EXE properties.

   f) NOEHxx Libraries
   -------------------
   Purpose: The NOEHxx libraries eliminate the overhead of
   exception-handling code in the run-time library for users who
   don't need it and for those who rely on any libraries that do
   require it.

   How to use: You must link a NOEHxx library before linking any
   standard runtime library. For command-line tools, you can do this
   by specifying the required NOEHxx library on the BCC command-line
   or by making it the first library given to TLINK.

   For the IDE, choose the No Exception library option from 
   TargetExpert.

   What they do: The NOEHxx libraries resolve calls to
   exception-related compiler helper functions to dummy functions
   that return appropriate return values. They also restore the
   pre-exception behavior of operator new to return NULL on
   out-of-memory conditions. Non-exception-enabled versions of
   setjmp() and longjmp() are also provided.

   Limitations: Some features introduced in BC4.0 require exception
   handling. These include the string class, BIDS container classes,
   the standard OWL libraries, and RTTI.

   g) Declarations in Conditions
   -----------------------------
   Declarations in conditions are now supported. This means that
   variables may be declared within the condition expression of 'if'
   and 'switch' statements. The scope of the variable is that of the
   statement. In the case of an 'if' statement, the variable is
   available in both the 'if' and the 'else' clauses. Refer to the
   description of the if keyword in online Help for more information.

   h) Name Mangling
   ----------------
   Name mangling has changed to include the calling convention and
   other code modifiers. The following modifiers now affect mangling:

       __saveregs
       __stdcall
       __fastcall
   
   This may have an impact in linking existing libraries, since the
   default calling convention is cdecl, and the Win32 API macro
   CALLBACK implies __stdcall calling convention. Therefore, functions
   that are declared as CALLBACK functions and compiled with older
   compilers will have different external naming than the same
   function compiled with this release. The linker will report these
   as unresolved externals.

   You need to recompile the old code with the new compiler, or
   use the -VC backward compatibility switch to inhibit the new
   mangling.

   i) Pragma to Support Anonymous Structs
   --------------------------------------
   A new pragma has been introduced to support anonymous structs
   in classes. This is to allow compilation of certain constructs
   used by MFC, although these constructs are not compatible with
   ANSI C++. You can use the pragma as follows:

      #pragma anon_struct on
      #pragma anon_struct off

   Between the two pragma directives above, anonymous structs
   embedded in classes are considered legal syntax by the compiler.

   j) Compiler Error Messages
   --------------------------
   Using typedef struct foo { ...}; without giving the typedef
   name used to be accepted by the version 4.x compiler, but now
   causes the error message: "Need an identifier to declare."

   Declaring a template class without a terminating semicolon used
   to be accepted by the version 4.x compiler, but now causes the
   error message:  "Declaration missing ;"

   k) Changes in the Semantics of C++
   ----------------------------------
   The compiler includes the latest changes in the ANSI C++
   Working Paper (Sept 95). Along with major new language features
   (like namespaces), there are some minor changes in the semantics
   of C++. Because they could cause potential pitfalls for existing
   code, we want to bring them to your attention.

       (1) Scope of declarations in a for-init statement

       Until this release, you could define a variable in a for-init
       statement and use this variable after the end of the
       for loop. For example,

           ...
           for (int i = 0; i < 10; i++)
                if (f(i))
                     break;
              -  if (i == 5) // Error: Undefined symbol 'i'
                             // unless -Vd is enabled
           ...

       By default, you cannot use the variable i outside the for
       loop. In the code example above, the compiler issues an
       error message when you attempt to access i, unless you 
       enable the new -Vd compiler switch.

       You can use the -Vd switch to compile applications using 
       the old for-init scoping rules. When -Vd is enabled, the 
       scope of a variable declared in the for statement extends 
       until processing encounters the end of the block containing 
       the for loop.

       (2) Checking template body syntax before instantiation

       Older versions of the compiler didn't check the syntax of
       a template body unless the template was instantiated. Now,
       a template body is parsed like every other declaration
       immediately when seen.

           template <class T>
           class X : T
           {
             Int j; // Error: Type name expected in template X<T>
           };

       Let's assume that Int hasn't been defined so far. This
       means that Int must be a member of the template argument T.
       But it also might be a typo that should be int instead of Int.
       Because the compiler can't guess the correct meaning, it will
       issue an error message.

       If you want to access types defined by a template argument,
       you can use a typedef to make your intention clear to the
       compiler:

           template <class T>
           class X : T
           {
             typedef T::Int Int;
             Int j;
           };

       NOTE: You cannot write just

           typedef T::Int;

       as in older versions of the compiler. Not giving the typedef
       name used to be acceptable, but now causes an error message.

       All other templates mentioned inside the template body are
       declared or defined at that point. Therefore, the following
       example is ill-formed and will not compile:

           template <class T>
           class X
           {
             void f(NotYetDefinedTemplate<T> x);
           };

       All template definitions must end with a semicolon. Older
       versions of the compiler did not complain if the semicolon
       was missing.

       (3) Linkage of locally declared names
 
       The default linkage of locally declared names is the
       linkage of the enclosing block. In other words, the default
       linkage depends on the current scope. In a C++ source file,
       the global default linkage is C++. If there is a definition
       of a name with C linkage, all locally declared names in that
       definition also get C linkage.

       If the linkage specifications for a name conflict within a
       single source file, the compiler will give an error message.
       If there is more than one source file involved (as in the
       example below), the linker displays messages about undefined
       external symbols.

           // SOURCE 1:    X.CPP
           extern "C" int cf(void)
           {
             int cppf(int);
             return cppf(42);
           }

           // SOURCE 2:    MAIN.CPP
           extern "C" int cf(void);
           int cppf(int i)
           {
             return i;
           }

           int main()
           {
             return cf() - 42;
           }

       To fix the example above, you have to make the local
       prototype for cppf() global. Then the rule for the local
       default linkage doesn't apply, and cppf() gets the global
       default linkage, which is C++.

       (4) Stricter rules for enum types

       The rules for statements involving enum types are now
       stricter. The compiler enforces these rules with error
       messages if the compiler switch -A is turned on (which means
       strict ANSI C++).

       Assigning an integer to a variable of enum type will give
       an error:

           enum color
           {
             red, green, blue
           };

           int f()
           {
             color c;
             c = 0;
             return c;
           }

       The same applies for passing an integer as a parameter to
       a function. Notice that the resulting type of the expression
       flag1|flag2 is int:

           enum e
           {
             flag1 = 0x01,
             flag2 = 0x02
           };

           void p(e);

           void f()
           {
             p(flag1|flag2);
           }

       To make the example compile, the expression flag1|flag2
       must be cast to the enum type: e(flag1|flag2).

   l) BCC32i.EXE, 32-bit Optimizing Compiler
   -----------------------------------------
   Borland C++ includes an additional 32-bit compiler, BCC32i.EXE.
   BCC32i is one of the alternatives on the Options|Project|32-bit
   Compiler page. This highly optimizing compiler is somewhat 
   slower than Borland's other 32-bit compiler (BCC32.EXE)
   but produces faster executable code. So you may find 
   it useful to use BCC32.EXE while developing an application,
   then optimize the code by doing a final compile using BCC32i.EXE.
   For best results, use the -O2 switch.

      * You can gain extra optimizations by using the -OI
        and -OM switches.

      * To debug code built with BCC32i.EXE, turn optimization
        off (using the -Od switch).

      * Debug information is not supported when the compiler
        compiles via assembly. To use the -B switch, turn
        off the -v switch. Also, if you have inline assembly code
        or use pseudoregisters, this implies compilation via
        assembly, and debug information must be disabled.

      * BCC32i inlines common math routines with the -O2 switch,
        including many routines from math.h. The inline versions do
        not handle floating-point exceptions, so fperr is not 
        called for exceptions in these routines. To disable the
        inlining of the math routines, use the -O-i switch.

   NOTE: You cannot use CodeGuard with the BCC32i compiler.

   m) 32-Bit Borland Database Engine (BDE)
   ---------------------------------------
   ODBC Driver
   -----------
   Version 2.0 of the MS-SQL ODBC driver from Microsoft does
   not support DECIMAL or NUMERIC field types (TTable.CreateTable
   fails). Version 2.11 MS-SQL driver from Intersolv does.

   32-bit/16-bit Connectivity
   --------------------------
   To support the Sybase and MS-SQL drivers, optional
   parameters were added to BDE's 32-bit configuration. 
   The installed CFG file will not contain the required 
   parameters. 

   To use the Sybase or MS-SQL drivers for 32-bit only:

   1. Run BDE Configuration Utility (32-bit)

   2. File | Merge parameters from SYB32.CFG or MSS32.CFG
      (for Sybase or MS-SQL)

   3. File | Save either option (Win31 or 32)

      a) Win 31 updates Registry's Configfile01
         directory, but will NOT save drivers in Registry

      b) Win 32 option updates Registry's Configfile01
         directory and saves Drivers in Registry

   4. After configuring, add aliases you want to use
      with the updated driver

      Note: The new configuration file is for 32-bit use only.

   Redistributing BDE Applications
   -------------------------------
   When using InstallShield Express to redistribute applications,
   be aware that it ALWAYS adds the extra parameters mentioned
   above.  This means that you must provide a separate CFG file 
   (without the extra parameters) for 16-bit applications.  To 
   keep the 16- and 32-bit CFG files separate, put the new 
   configuration file in a different location than the one in 
   the WIN.INI file under the IDAPI section.

   All BDE Applications
   --------------------
   Windows NT only: When running a BDE application from a directory
   that does not have "write" access: If there is no TEMP directory
   on the system, the error DBIERR_OSACCESS (OS Permission Denied) 
   occurs during a call to DbiInit.  To continue, create a TEMP 
   directory.

   All SQL Drivers
   ---------------
   Adding an Index to an SQL table may change the record buffer
   size.  If the cursor is live, close then reopen the table.

   Schema Cache for SQL Drivers
   ----------------------------
   The schema cache option (i.e., "Enable Schema Cache" set to true
   with BDECFG32) is for use with static databases. Changing the 
   database while this option is enabled can cause errors.

   Do not enable schema cache if you frequently:

      * add columns to a table
      * add/drop indexes from a table
      * change validity checks on fields (that is, "not null" added 
        or removed)

   One sign that a database is not static enough to use schema
   cache is if "Unknown SQL Errors" are returned whose error
   context refers to:

      * "Unknown Column"
      * "Invalid Bind Type"
      * "Invalid Type"
      * "Invalid Type Conversion"
      * "Column Not a Blob"

   If you receive these errors, try disabling schema cache.

   Oracle Driver
   -------------
   Live queries for Oracle tables require a table qualifier or
   an alias if the field names are quoted.  The following code
   produces an error:
     select * from someTable where "fieldname" = someValue

   Instead use either:

     select * from someTable T1 where T1."fieldname" = someValue
   or:
     select * from someTable where "someTable"."fieldname" = someValue

   n) International Codepages
   --------------------------
   Under Windows NT, the 16-bit compiler does not support filenames 
   that use extended characters from codepage 850.  Codepage 437 
   works fine.

   o) Running OLE Applications under Windows NT
   --------------------------------------------
   You must set the system path to the BIN directory if running OLE
   applications using the dynamic version of the libraries.

   p) Integrated Resource Workshop Notes
   ------------------------------------------
   Integrated Resource Workshop doesn't support editing 24-bit images 
   or images using greater than 256 colors.

   If your TMP environment variable is set to a nonexistent 
   directory, the Dialog editor may behave unpredictably.

   Note that you cannot install and use DLL custom controls in 
   Resource Workshop.  You must use VBX Custom Control Libraries.

   q) Installing TASM 5.0 after Borland C++ 5.01
   ------------------------------------------------
   If you update to Borland C++ 5.01 and then install TASM 5.0 
   afterwards, you will overwrite a number of files in your \BC5\BIN 
   and \BC5\LIB directories. One option is to install TASM 5.0 to
   a separate directory, and ensure the TASM\BIN is later in the 
   path than \BC5\BIN.

   Otherwise, if you install TASM 5.0 on top of the BC5 directory, 
   you must refresh the BIN and LIB directories from the BC 5.01 
   CD. For example, if you install BC 5.01 to C:\BC5 and your CD 
   is drive D:, execute these commands from a command prompt:

   xcopy /u  D:\BC5\BIN\*.*  C:\BC5\BIN
   xcopy /u  D:\BC5\LIB\*.*  C:\BC5\LIB

   r) Borland Visual Database Tools
   --------------------------------
   When you load projects previously created using Visual 
   Database Tools components, please verify that properties 
   of TQuery and TStoredProc components are still correct. 
   Certain .RC or .RES files containing TQuery or TStoredProc 
   components, mainly those with values or parameters, may 
   need to have their properties reset.

   Visual Database Tools provides the following new classes: 
   TDBTable, TDBDataSource, TDBQuery, TDBBatchMove,
   TDBDatabase and TDBStoredProc.  To see these new classes, look 
   in include\vdbt\dbacc.h and the example TDBCLASS.  These classes are 
   for using VDBT controls in a window instead of a dialog box when you want
   to connect the data aware controls to the data access controls.  If these 
   classes are instaniated outside the constructor of the window that will 
   contain them, their Create function must be called after the call to new.   

   Another new example, EVHANDLE, illustrates the use of VDBT Event
   Handling using the Source/Sink method.

   Note:  The bdtawr*.lib, bdtoi.lib, bdtofi.lib, bdtci.lib and 
     bdtcfi.lib are now obsolete and will ship for this 
     version only for backward compatibility. You should
     change all projects to reference the new names 
     because the old libraries will not be shipped in 
     future versions.  You should use the following new
     libraries instead:

     16-bit linking static or dynamic: 
     bdta.lib, bdto.lib, bdtc.lib
     32-bit linking static or dynamic: 
     bdtaf.lib, bdtof.lib, bdtcf.lib

   s) Accelerated Keyboard Setting
   ----------------------------
   Keyboard acceleration in the IDE defaults to being OFF.  To  
   enable the accelerated keyboard, you need to add a section to 
   your BCW5.INI file called [Keyboard], and it requires an entry
   called Accelerate that is set to a nonzero value:
   [Keyboard]
   Accelerate=1

   t) Using Experts with VDBT Controls and Classes
   -----------------------------------------------
   New support has been added to make it easier to use
   AppExpert and ClassExpert with the VDBT controls and 
   classes.  To do this, generate an AppExpert application:
   the easiest test case is a dialog as main window 
   application.  Bring up ClassExpert and click on the 
   Client dlg class.  Right click and pick Edit dialog.  Drop
   some VDBT data access and data aware controls on the dialog.
   If you follow the "Note" below you should now be able to 
   run the application.  

   Now exit your application and go back to ClassExpert.  In the 
   events pane under control notifications, you should see the IDs 
   for your VDBT controls listed.  Right click on one and pick Add 
   instance variable.  This adds a variable to your dialog class 
   that uses the TDBxxx VDBT class for that control.  This allows 
   your program to call methods for VDBT controls from within your
   application.  For example TDBTable1->Open().

   You can also create a handler for an event from ClassExpert's 
   Events pane.  ClassExpert does not use the Source/Sink method
   but instead creates a response table entry that is typical of 
   any VBX control.  After using ClassExpert to add the instance 
   variable, you can add code manually to use the Source/Sink 
   method instead if you prefer.

   Note: After you use AppExpert to generate the app and before you 
       try to build and run it, you need to go to TargetExpert, click 
       on OLE, and then add the three VDBT libraries that apply to 
       the application you are building:
       32-bit static or dynamic link: bdtaf.lib, bdtcf.lib, bdtof.lib
       16-bit static or dynamic link: bdta.lib, bdtc.lib, bdto.lib

   u) Previewing VBX Controls
   --------------------------
   If you want to see VBX controls when previewing a dialog box
   in the Project window, add the following to your BCW5.INI:

   [Workshop]
   VBXPreview=1

   Setting this option results in a significant slow down of
   the display.  If this option is not set, VBX controls are shown
   as gray rectangles.

   v) Naming Conflict Between OLE and BIVBX.H
   -------------------------------------------
   Due to conflicting definitions of the data type LPPICTURE 
   between OLE and BIVBX.H in applications mixing both OLE 
   and VBX controls, you should always use PICTURE FAR* 
   when referring to a far pointer to PICTURE structure.

   w) Microsoft Foundation Classes (MFC) Info
   ------------------------------------------
   MFC files are included in the Borland C++ BIN, LIB and HELP 
   directories, in \INCLUDE\MFC and EXAMPLES\MFC.

   If you create a new project and click MFC, BC5\include\MFC
   is not added to your project's INCLUDE path.  You must go to
   Project|Options|Directories and add the appropriate MFC 
   subdirectory to the include path. 
   For example: c:\bc5\include;c:\bc5\include\mfc.

   DAO support is not provided.

   ODBC support is provided but you will need to install 
   the ODBC SDK or some third-party ODBC driver kit to use it.

   When building OCX controls, use c0d32dyn.obj instead of 
   c0d32.obj for startup code.

   If you build some multithreaded examples with DIAGS on, you 
   may get asserts when running the compiled program.  This is 
   due to assumptions made by the diagnostic routines on thread
   synchronization issues which are implementation dependent.

   Some of the examples are designed to work with only the static
   or the dynamic MFC library. For example, the OCX controls are
   intended for use with the dynamic MFC library. If you change
   the library setting from the default set in the project or make
   file, such examples may not work correctly.

   When rebuilding MFC from the source directory, the libraries
   are all put into the BC5\LIB dir. However, you will need to 
   copy the BFC*.DLL files from BC5\SOURCE\MFC to BC5\BIN.
   
   x) New startup code: c0d32dyn.obj
   ---------------------------------

   The startup code, c0d32dyn.obj, allows 32-bit DLL's built with
   Borland C++ to be used with applications built with other tool
   sets (i.e., Delphi, Visual Basic, or Visual C++).

   To create an EH-compatible 32-bit DLL, just replace the default
   startup code, c0d32.obj, with c0d32dyn.obj and re-link the DLL.
   Note that you must also use the dynamic Runtime Library (RTL).
   Using command-line tools, the startup code is the first object
   module specified to TLINK32.

   Using the Integrated Development Environment, go to Target Expert
   (from the speed menu in the Project Window) and ensure that the 
   Dynamic/Static radio buttons are set to Dynamic. Then select 
   Options|Environment|Project View and check Show run-time nodes.
   In the project window, there will now be displayed entries for 
   the startup module and all the libraries which are automatically 
   linked in, depending on your target. Remove the node for the startup
   code, c0d32.obj, and add c0d32dyn.obj in its place. Note that if you
   return to Target Expert and select the OK button, the default startup
   module will again be added to your project and you will need to 
   remove it again. Should you forget to remove it, when you build the 
   DLL, you will get the linker error 'Multiple entry points defined'.

   For an example of using c0d32dyn.obj, see the DLLMIX example located
   in bc5\examples\dllmix.

--------------------------------------------------
5. Important Information for the Development Suite
--------------------------------------------------

This section is for users who purchased the Borland C++
Development Suite.

   a) PVCS Version Manager
   -----------------------
   Use the Browse PVCS Project menu only with a project open.

   Do not use PVCS from the IDE while a background compile
   is in progress.

      (1) Managing an Existing PVCS Project

      If you have a project already under PVCS version control
      and you want to manage the existing project through the
      IDE PVCS Add-On, follow these steps to set it up:

        1. Save a copy of your original archive file.
        2. Set up the project anew in PVCS through the IDE.
        3. Copy your old archive file over the new one PVCS 
           just created.

      (2) Which Project Files are Placed Under Version Control

      When you first place a project under version control, 
      PVCS enumerates the nodes in your IDE project.  It adds 
      to version control only those files associated with nodes in
      the project.  As a result, it omits autodependency files.

      For example, if you have a node for MYSOURCE.CPP, and
      MYSOURCE.CPP includes MYSOURCE.H, only the CPP file is added to
      version control. To include the header file, you must add it to 
      the project explicitly. Right-click the source node, choose Add
      Node, and browse to the header file.  Now when PVCS enumerates
      nodes, it will add the header, too.  

      The PVCS Add-On does not support archiving files from nodes  
      that are not translated.  This includes binary resource files 
      (.BMP, .ICO...), text files, and source pools.

   b) CodeGuard and JAVA
   ---------------------
   CodeGuard (CG45) and BCWJAVA.500 (the version that 
   ships with Borland C++5.0) are located in \SETUP\CG5\CG45 
   and \SETUP\BCWJAVA\BCWJAVA.500, respectively, on the CD.

/****************************END OF FILE***************************/

