home *** CD-ROM | disk | FTP | other *** search
/ C Programming Starter Kit 2.0 / SamsPublishing-CProgrammingStarterKit-v2.0-Win31.iso / bc45 / readme.txt < prev    next >
Text File  |  1997-07-23  |  35KB  |  847 lines

  1.                            WELCOME TO BORLAND C++ 4.52
  2.  
  3.  
  4. This README file contains important information about Borland C++.
  5. For the latest information about Borland C++ and its accompanying
  6. programs, read this entire file. See file OWLDOC.WRI for the latest
  7. information on the ObjectWindows library.
  8.  
  9.  
  10. TABLE OF CONTENTS
  11. -----------------
  12. 1.  How to Get Assistance
  13.           -- Sources of information
  14. 2.  Installation
  15.           -- Installing Borland C++ on your hard disk
  16. 3.  New Features
  17. 4.  Important Information
  18.           -- ObjectComponents Framework (OCF), OLE 2.0, 
  19.              and ObjectWindows 2.5
  20.                    -- New files in WINDOWS\SYSTEM directory
  21.                    -- New tools for registering OLE servers and
  22.                       automation controllers
  23.                    -- Registering a debugger to run an OLE server
  24.                    -- Debugging OLE applications under Windows NT
  25.                    -- WinSight
  26.                    -- OLE error codes
  27.                    -- OLE2 applications
  28.                    -- OLE implementation under Windows NT
  29.                    -- OLE2 compiler options
  30.           -- VBX Support (including 32-bit)
  31.           -- OpenHelp
  32.                    -- OpenHelp with TASM and PowerPack
  33.           -- Out of Memory and MAKESWAP
  34.           -- Threads
  35.           -- DDVT functions and RTTI
  36.           -- Inline assembly and interrupts
  37.           -- Creating 16-bit import libraries from .DEF files
  38.           -- New Compiler Back-end and Pentium scheduler support
  39.           -- New Compiler Switches and Linker Optimizations
  40.           -- NOEHxx Libraries
  41.           -- IDE/Integrated Debugging
  42.           -- InProc servers and the IDE
  43.           -- Turbo Debugger for Windows
  44.           -- Using Tools with NTFS
  45.           -- CTLDATA statements in Win32
  46.           -- Running from a Windows 3.1 DOS Prompt
  47.           -- Converting Borland C++ 3.1 to Borland C++ 4.52 code
  48.           -- Floating-Point Formats
  49.           -- WinRun
  50.           -- AppExpert and OWL
  51.           -- Online Registration
  52.  
  53.  
  54. ------------------------
  55. 1. HOW TO GET ASSISTANCE
  56. ------------------------
  57.  
  58. SOURCES OF INFORMATION
  59. ----------------------
  60.   If you have any problems, please read this file, the
  61.   HELPME!.WRI and other files in your DOC subdirectory, and
  62.   check the on-line help and the Borland C++ manuals first.
  63.   If you still have a question and need assistance, help is
  64.   available from the following sources:
  65.  
  66.   For technical support by phone for Borland C++ 4.52, 
  67.   contact Macmillan Publishing.  Please do not contact 
  68.   Borland International for support.  See your Getting 
  69.   Started booklet for more information on contacting 
  70.   Macmillan Publishing.
  71.  
  72.   Email:  support@mcp.com
  73.  
  74.   Telephone:  (317) 581-3833
  75.  
  76.   Fax:  (317) 581-4773
  77.  
  78.   Mail:  Macmillan Computer Publishing
  79.      Attention: Support Department
  80.      201 West 103rd Street
  81.      Indianapolis, IN 46290
  82.  
  83.  
  84.   Borland offers a range of services to provide comprehensive 
  85.   product information, updates, and product services. You can 
  86.   get more information on Borland C++ by contacting any of 
  87.   these resources:
  88.  
  89.   World Wide Web:  http://www.borland.com/
  90.  
  91.   FTP:             ftp.borland.com
  92.  
  93.   Newsgroups:      forums.borland.com  
  94.  
  95.   Listserv:        listserv@borland.com
  96.   Send an email message containing this text:
  97.  
  98.     SUBSCRIBE<space>BCPP<space>FIRSTNAME<space>LASTNAME
  99.  
  100.  
  101. =============== 
  102. 2. INSTALLATION 
  103. =============== 
  104. IMPORTANT!
  105. Do not install Borland C++ 4.52 over previously installed
  106. Borland C++ directories from versions 4.5 or earlier. The
  107. files in this distribution will not work with previously
  108. shipped tools and libraries.  This is particularly true for
  109. configuration files from previous shipping releases, like
  110. TDCONFIG.TDW and BCCONFIG.BCW.
  111.  
  112. If you used Turbo Assembler 4.0 or the Borland Power Pack
  113. for DOS with a previous installation of Borland C++, you
  114. must reinstall those products after installing Borland C++
  115. 4.52.
  116.  
  117. If you used CodeGuard for Borland C++ 4.5 with a previous
  118. installation of Borland C++, you must reinstall CodeGuard
  119. after installing Borland C++ 4.52.
  120.  
  121. Also, be especially careful when using object files and
  122. libraries from earlier Borland C++ versions with binaries
  123. created with this release. There are several potential
  124. problems when linking with old objects or libraries.
  125. Exceptions won't work correctly (destructors won't get
  126. called) when a pre-BC4 stack frame is unwound due to an
  127. exception.
  128.  
  129. Do not use long file names when installing under Windows
  130. NT.
  131.  
  132. -----------------------------------------------
  133. Installing Borland C++ 4.52 on your hard disk
  134. -----------------------------------------------
  135.  
  136. For information about installing Borland C++ 4.52 from
  137. CD-ROM, see the CD booklet.
  138.  
  139. To install Borland C++ 4.52 from floppy disks,
  140. 1.  Put disk 1 in your floppy drive.
  141. 2.  In Program Manager, choose File|Run.
  142. 3.  Type A:\INSTALL. (If your disk drive is not drive A, type the
  143.     appropriate letter instead.)
  144. 4.  Choose OK.
  145. 5.  Follow the instructions on the screen.
  146.  
  147. Diagnostic and debug version of OWL are not installed to the
  148. hard disk, but they can be copied from the CD or built from
  149. OWL source using the makefile provided.
  150.  
  151. Users of ObjectWindows 1.0, Turbo Vision 1.0, or the Paradox
  152. Engine should read the COMPAT.TXT file for information on
  153. using these products with Borland C++ 4.52.
  154.  
  155. To get Turbo Profiler, you must install the debuggers.
  156.  
  157. **** Note to Windows NT, OS/2, and Windows 95 users ****
  158.  
  159. If you intend to use Borland C++ under any of these
  160. platforms you must follow some additional installation
  161. steps, which are listed in the INSTALL.TXT file.  If you
  162. fail to read and follow these configuration guidelines, you
  163. may encounter several significant problems when using
  164. Borland C++.
  165.  
  166. The following files which appear in the BC45\BIN directory
  167. are intended for Windows 3.1 and may not work correctly in
  168. conjuction with 32-bit applications running under Windows
  169. 95:
  170.  
  171. DIB.DRV
  172. YESMOUSE.DRV
  173. VGAP.DRV
  174. MSMOUSE.DRV
  175.  
  176. However, certain 16-bit applications require these drivers to run.
  177.  
  178. For more information about installing and configuring
  179. Borland C++, see the file INSTALL.TXT which can be found in
  180. the following locations:
  181.  
  182. * Borland C++ floppy disk 1 (INSTALL.TXT)
  183. * Borland C++ CD-ROM (\BC45\INSTALL.TXT)
  184.  
  185.  
  186. ***************
  187. 3. NEW FEATURES
  188. ***************
  189.  
  190. Borland C++ 4.52 is an update to 4.51.  The main difference
  191. is the upgrading of header files and import libraries to
  192. support the Windows 95 programming.  There is a new version
  193. of the OWL libraries (2.52) to accommodate some altered
  194. structure definitions in the new Win32 headers.  In addition,
  195. 4.52 makes small improvements to our VBX support.  For a
  196. more specific list of updated files, see INSTALL.TXT.
  197.  
  198. The rest of this section describes what was new in 4.5 for
  199. users who are upgrading from earlier versions.
  200.  
  201. Borland C++ 4.5 includes the following new features:
  202.  
  203.   * A complete encapsulation of OLE2 via new ObjectWindows classes
  204.     and the ObjectComponents Framework, a new set of C++ classes. This
  205.     allows you to develop applications that support the following
  206.     OLE capabilities in both 16 and 32-bits:
  207.           - Linking and embedding containers
  208.           - Linking and embedding servers
  209.           - Automation servers (automatable servers)
  210.           - Automation controllers
  211.           - OLE clipboard operations
  212.           - OLE drag and drop operations
  213.           - In-place editing
  214.           - OLE user interface, including menu merging, pop-up menu
  215.             for activated object, verbs on container's Edit menu
  216.           - Compound file storage
  217.           - Registration
  218.           - Localized strings for international support
  219.           - Type libraries
  220.   * IDE enhancements to TargetExpert, AppExpert, and ClassExpert to
  221.     support the new OLE2 capabilities.
  222.   * A new, faster, default compiler back-end.
  223.   * The 16-bit Profilers (TPROF and TPROFW) have returned to the product.
  224.   * VBX support for 32-bit programs.
  225.   * OpenHelp, a utility that enhances the functionality of Windows Help
  226.     by allowing you to quickly search for topics across Help files, as
  227.     well as the ability to add your own Help files (or remove them) from
  228.     the search.
  229.   * Visio OLE Testbed, a subset of Shapeware's drag-and-drop drawing
  230.     program. You can use Visio OLE Testbed to test OLE compound documents,
  231.     objects, and automation with applications you create using Borland C++.
  232.   * WinRun allows you to launch Window application from the MS-DOS prompt
  233.     in Windows 3.1.
  234.   * For CD-ROM users, the complete Borland C++ manual set is now available
  235.     online in the DynaText document viewing browser. Using DynaText, you 
  236.     can search through the entire collection of books to find selected
  237.     topics. You can view the contents of a single book page by page or 
  238.     even print the complete documentation set. See the booklet in your
  239.     Borland C++ 4.52 CD-ROM case for information about how to launch and
  240.     use the DynaText Browser.  Complete information on how to use DynaText
  241.     is available in the online Help for the Browser.
  242.   * Improved EasyWin provides scrolling and printing support for character
  243.     based Windows applications.
  244.   * Software based correction for the FDIV flaw in older Pentium chips.
  245.     For more information, see BCW.HLP.
  246.  
  247. ************************
  248. 4. IMPORTANT INFORMATION
  249. ************************
  250. This section contains important information not found in the manuals, 
  251. online Help, or online text files.  Please read through this material
  252. in its entirety.
  253.  
  254. ----------------------------------------------------------------
  255. ObjectComponents Framework (OCF), OLE 2.0, and ObjectWindows 2.5
  256. ----------------------------------------------------------------
  257.  
  258. New file In WINDOWS\SYSTEM directory
  259. -------------------------------------
  260.  
  261. Borland C++ 4.52 installs new files called BOCOLE.DLL and
  262. BOCOF.DLL in your WINDOWS\SYSTEM directory. These libraries
  263. must be present in order for 16 and 32-bit ObjectComponents
  264. programs to execute respectively.  BOCOFW.DLL is a unicode
  265. implementation of BOCOF.DLL which can be rebuilt from
  266. source or copied from the CD-ROM.  BOCOFW.DLL is for use on
  267. Windows NT only.
  268.  
  269. New tools for registering OLE servers and automation controllers
  270. ------------------------------------------------------------------
  271.  
  272. The program tool AUTOGEN simplifies the task of writing
  273. proxy classes for an automation controller. AUTOGEN reads
  274. type libraries (*.OLB; *.TLB) and emits C++ source files
  275. containing the proxy objects. The REGISTER and GUIDGEN
  276. utilities provide a means of registering and unregistering
  277. servers and generating unique identifiers.
  278.  
  279. Registering a debugger to run an OLE server
  280. -------------------------------------------
  281.  
  282. To make OLE invoke your server through the debugger, add the
  283. following entry to the appropriate registration table.
  284.  
  285.      REGDATA(debugger,   "TDW")
  286.  
  287. You can specify a complete path to the debugger as well as
  288. command-line options for the debugger.  Do not place the
  289. name of the server program on the debugger command line.
  290. That will happen automatically.
  291.  
  292. If you want to choose at runtime whether to invoke the
  293. server with or without the debugger, then each application
  294. or document must essentially be registered twice, using
  295. different CLSIDs, progids, and descriptions. The debug and
  296. non-debug entries will appear simultaneously in object
  297. browsers.  The debug invocation will have the /Debug flag
  298. on the command line; this will in turn register the
  299. application class factory for the debug registration
  300. instead of the normal registration. To test for the
  301. presence of /Debug on the command line, call this function:
  302.  
  303.       TOcModule::IsOptionSet(amDebug);
  304.  
  305. If you register debugprogid, you should also register both
  306. debugdesc and debugger. The debug description string
  307. distinguishes the debugging and non-debugging registry
  308. entries for the user. If you register debugprogid, the
  309. debugger entry will be used only for the debug
  310. registration.
  311.  
  312. These are typical debug entries:
  313.      REGDATA(debugprogid,"MyDocument.Debug")
  314.      REGDATA(debugdesc,  "MyDocument Debug Object")
  315.      REGDATA(debugger,   "TDW")
  316.  
  317. There is also a debugclsid entry, but you don't have to
  318. register it yourself because ObjectComponents generates it
  319. for you automatically by offsetting the application's
  320. clsid.
  321.  
  322. The application registration is used for automation
  323. invocations, and document registrations are used for
  324. linking and embedding invocations.  Any or all can be set
  325. up for dual registration.
  326.  
  327. For DLL servers, the registration debug entries are
  328. completely ignored.  To debug DLL servers, use the
  329. REGISTER  tool with the -Debug command-line option. This
  330. will launch the DLL and break inside, allowing breakpoints
  331. to be set. Do not close the message box until the debugging
  332. session is complete.
  333.  
  334. Debugging OLE applications under Windows NT
  335. -------------------------------------------
  336.  
  337. When debugging OLE applications under Windows NT 3.5, you
  338. may experience a lock up if a program is forced to
  339. terminate.  This will happen when any OLE application is
  340. running under the IDE and you explicitly request Debug |
  341. Program Terminate, or implicitly request program termination
  342. by closing a project.  This problem will not occur under
  343. Windows 3.1 or Windows 95, and will not happen with non-OLE
  344. applications.  Borland recommends that all developers
  345. running under NT accept any updates to the NT OLE DLLs if
  346. and when they are made available by Microsoft.
  347.  
  348. WinSight
  349. --------
  350.  
  351. When WinSight spies on an ObjectWindows OLE container, it
  352. sometimes causes corruption of the container's menus.  This
  353. behavior is expected.  If it occurs, quit the application
  354. and start again.
  355.  
  356. OLE error codes
  357. ---------------
  358.  
  359. The file DOC\OLE_ERRS.TXT contains a list of the error codes
  360. OLE defines.  The list is sorted in numerical order.  Refer
  361. to it for help in interpreting OLE-related error returns.
  362.  
  363. OLE2 applications
  364. -----------------
  365.  
  366. Many commercial products are now offering their first
  367. generation of OLE2 enabled applications. Some of these
  368. applications are more complete OLE implementations than
  369. others. Borland has observed several major commercial
  370. applications that exhibit errant behavior when asked to
  371. perform certain OLE operations. This is especially true when
  372. asked to embed DLL servers, which many OLE applications
  373. appear to be unprepared to handle. If you experience
  374. problems when using OLE applications you create with
  375. Borland C++ in conjunction with third party products, do
  376. not jump to the conclusion that the problem is yours.  Until
  377. OLE applications in the market place mature, it is not yet a
  378. safe assumption that just because a product comes from a
  379. leading company that it is robust. Changes introduced
  380. between OLE 2.0 and OLE 2.02 are responsible for exposing
  381. some of these problems. When reporting bugs in OLE
  382. applications to third parties, be sure to specify that they
  383. should be developing and testing under the latest version
  384. of OLE.
  385.  
  386. OLE implementation under Windows NT
  387. -----------------------------------
  388.  
  389. The 16 bit OLE implementation originally shipped in Windows
  390. NT 3.5 may exhibit problems with DLL servers and may behave
  391. differently than the version of OLE that MS recommends for
  392. Windows 3.1. Borland recommends that all NT developers
  393. update to later versions of the NT OLE DLLs if and when
  394. they are made available by Microsoft.
  395.  
  396. OLE2 compiler options
  397. ---------------------
  398. 1) 32 bit OLE2 projects must increase the identifier length to 55.
  399.    You can do this with the command line compiler -i switch or in the IDE
  400.    with the Options|Project|Compiler|Source edit field.
  401. 2) When using 32-bit OLE2, INC_OLE2 must be defined. You can do this on the
  402.    command line with -DINC_OLE2 or in the IDE in the
  403.    Options|Project|Compiler|Defines edit field.
  404. 3) When linking 16 or 32 bit OLE2 modules, the OLE2 import library
  405.    (ole2w16.lib or ole2w32.lib) must come before the RTL import library 
  406.    (import.lib or import32.lib respectively).
  407.  
  408.  
  409. -----------------------------
  410. VBX Support (including 32-bit)
  411. ------------------------------
  412. The BIVBX102.DLL has been renamed to BIVBX11.DLL.
  413.  
  414. BIVBX11.DLL has been tested with a large number of VBX controls written
  415. to the Microsoft Visual Basic 1.0 CDK specification. If you have a problem
  416. with a specific control, make sure that it does not require VB 2.0 or
  417. VB 3.0 CDK functionality. VBX 2.0 and 3.0 controls will usually display a
  418. message saying that they require VB 2.0 or 3.0 support. In some cases,
  419. though, the control might appear to work but exhibit instability. Please
  420. contact the control vendor and explain the problem. They might have an
  421. updated control or might be able to contact Borland to find a solution.
  422.  
  423. The following functions in BIVBX.H are limited to 16-bit only and should be
  424. replaced as follows:
  425.  
  426.  Old (16-bit only)         New (16-bit and 32-bit)
  427.  -----------------         -----------------------
  428.  VBXGetBasicStringPtr      VBXGetBasicStringBuf
  429.  VBXGetCStringPtr          VBXGetCStringBuf
  430.  VBXGetEventName           VBXGetEventNameBuf
  431.  VBXGetPropName            VBXGetPropNameBuf
  432.  VBXLockCString            VBXLockCStringBuf
  433.  VBXMethod                 N/A
  434.  
  435. To build any 32-bit application that uses VBX controls, link with
  436. BIVBX32.LIB instead of BIVBX.LIB. VBX support for 32-bit applications
  437. requires that the following files are present in the Windows
  438. \SYSTEM directory at run-time:
  439.  
  440. All:           BIVBX11.DLL
  441. Win32s:        BIVBX11S.DLL and BIVBX11.32S
  442. Windows95:     BIVBX11C.DLL and BIVBX11.32C
  443. NT:            BIVBX11N.EXE and BIVBX11.32N (installed in \SYSTEM32)
  444.  
  445. For more information, see the BIVBX.WRI file.
  446.  
  447. TargetExpert now manages libraries for VBX controls.   If you have an IDE
  448. project which uses VBX controls, make the following change  to your project
  449. to take advantage of TargetExpert support:
  450. - In the project window, delete the bivbx.lib node.
  451. - In the project window, right click on your EXE node.
  452. - From the resulting SpeedMenu, select TargetExpert.
  453. - In TargetExpert, enable the VBX checkbox and press OK.
  454.  
  455. ----------------------------------
  456. NT console applications and Win32s
  457. ----------------------------------
  458. There is no Win32s console, so attempting to run a Win32 console
  459. application without NT loaded will result in an error.
  460.  
  461. ----------
  462. OpenHelp
  463. ----------
  464. See the online Help provided with OpenHelp (OPENHELP.HLP) for details on how
  465. to use and configure this new search engine.
  466.  
  467. OpenHelp with TASM and PowerPack
  468. ------------------------------------
  469. If you install TASM with BC 4.52, you need to run the OpenHelp configuration
  470. to configure your Help files. If you install PowerPack, the BCDOS.HLP file
  471. will be overwritten. However, the .HLX index file will not include index
  472. entries for the new BCDOS.HLP file. To fix this, remove BCDOS.HLP from
  473. OpenHelp and re-add it so that a new .HLX file is generated. You can delete
  474. the BHBC4.HDX file from the \BIN directory because it is no longer needed.
  475.  
  476. --------------------------
  477. Out of Memory and MAKESWAP
  478. --------------------------
  479. If you get "Out of Memory" errors from DOS when running the command-line
  480. tools, or if you have only 8 MB of RAM and have out-of-memory problems
  481. building and using 32-bit applications, then create a swap file with the
  482. MAKESWAP utility. Note that this applies to DOS only, not to DOS boxes
  483. opened under Windows. MAKESWAP takes the size of the file to create in
  484. KBytes, for example
  485.  
  486.   MAKESWAP 12000
  487.  
  488. will create a 12MB swap file in the current directory called EDPMI.SWP 
  489. for use by Borland command-line tools.  To enable the swap file, use the
  490. DPMI32 environment variable by issuing the following command at the DOS
  491. prompt:
  492.  
  493.   set DPMI32=SWAPFILE <location of swap file>\EDPMI.SWP
  494.  
  495. You must clear this environment variable by issuing the command
  496.  
  497.   set DPMI32=
  498.  
  499. before running Paradox or other 16-bit DPMI-hosted executables, such as
  500. Borland C++ 3.1 command-line tools.
  501.  
  502. -------
  503. Threads
  504. -------
  505. When creating secondary threads, the _beginthread or _beginthreadNT
  506. and _endthread() RTL functions must be used to ensure the proper RTL
  507. initialization and cleanup. Using NT's CreateThread and ExitThread functions
  508. will result in undefined behavior if an implicit or explicit call is made to
  509. the RTL. Both exception handling and RTTI can lead to implicit RTL calls.
  510.  
  511. -----------------------
  512. DDVT functions and RTTI
  513. -----------------------
  514. When compiling code that contains DDVT functions, do not use run-time type
  515. information or you will receive an error message. In order to compile
  516. without using run-time type information, compile all code that uses DDVTs
  517. (for instance OWL 1.0x libraries and applications)with the -RT- switch
  518. (Options|Project|C++ Options|Exception handling\RTTI in the IDE).
  519.  
  520. ------------------------------
  521. Inline assembly and interrupts
  522. ------------------------------
  523. If your inline assembly code includes an interrupt call, the compiler does
  524. not preserve any registers altered by the call. You must write code to save
  525. and restore registers when using interrupt calls within inline assembly
  526. code.
  527.  
  528. ------------------------------------------------
  529. Creating 16-bit import libraries from .DEF files
  530. ------------------------------------------------
  531. Use the /o implib switch when creating 16-bit import libraries from .DEF
  532. files to prevent implib from generating extensions for import entry module
  533. names.
  534.  
  535. --------------------------------------------------
  536. New Compiler Back-end and Pentium scheduler support
  537. --------------------------------------------------
  538. Borland C++ 4.52 includes two different compiler back-ends. By
  539. default, the IDE uses BCWS32.EXE and the command line uses BCC32.EXE. 
  540. (Both 32-bit compilers use the same front-end.) However, if your application 
  541. requires special Pentium scheduler support, then you must use BCWS32A.EXE 
  542. from the IDE or BCC32A.EXE from the command line. 
  543.  
  544. To configure the IDE so that it uses BCWS32A.EXE:
  545. 1) Use a text editor to open the file \WINDOWS\BCW.INI.
  546. 2) Add the following lines to the file and then save the file:
  547.    
  548.    [SERVER]
  549.    Server32=BCWS32A.EXE
  550.  
  551. The BCWS32A and BCC32A compilers reorder certain assembly instructions
  552. so that they take advantage of the Pentium scheduler. However,
  553. BCWS32A.EXE and BCC32A.EXE have the disadvantage of longer compile
  554. times. Because the executable files produced by BCWS32.EXE and
  555. BCC32.EXE run on all 80386 systems and greater, it's recommended
  556. that you always use these default compilers, except when you need the
  557. special support of the Pentium scheduler.
  558.  
  559. If you use the BCC32A.EXE command-line compiler, you can specify Pentium
  560. scheduler support using the -5 command-line option. To specify Pentium
  561. scheduler support for the BCWS32A.EXE IDE compiler, open the Project
  562. Options dialog box and check 32-bit Compiler|Processor|Pentium setting.
  563. Note that the default compilers do not support these option settings.
  564.  
  565. BCC32.EXE and BCW32S.EXE evaluate function parameters in the order they are
  566. pushed on the stack as opposed to BCC32A.EXE and BCW32A.EXE, which evaluate
  567. parameters from left to right. This difference in the order of evaluation is
  568. important if, for example, functions called in parameter evaluations cause
  569. global side effects. According to the ANSI C/C++ language specifications,
  570. the evaluation of function parameters is implementation dependent.
  571.  
  572. ---------------------------------------------
  573. New Compiler Switches and Linker Optimizations
  574. ----------------------------------------------
  575. See your documentation for a description of the new compiler switches
  576. for exception handling and a list of the new optimization capabilities
  577. as well as the new command-line linker options.
  578.  
  579. ----------------
  580. NOEHxx Libraries
  581. ----------------
  582. Purpose:
  583.  
  584. The NOEHxx libraries eliminates the overhead of exception-handling code in
  585. the run-time library for users who don't need it and who do rely on any
  586. libraries that require it.
  587.  
  588. How to use:
  589.  
  590. A NOEHxx library must be linked in before the standard runtime library.
  591. For command-line tools this can be accomplished by specifying the appropriate
  592. NOEHxx library on the BCC command-line, or making it the first library given
  593. to TLINK.
  594.  
  595. For the IDE, add the appropriate library to the project using AddNode.
  596. To ensure the NOEHxx library is processed before the standard libraries,
  597. turn on "Show Runtime Nodes" in the Options|Environment|ProjectView dialog.
  598. From the project window you can move the library up and down using the
  599. ALT-<arrow> keys. Be sure the NOEHxx library appears before other standard
  600. libraries. Note: use NOEHWL.LIB when building DPMI16 programs.
  601.  
  602. What they do:
  603.  
  604. The NOEHxx libraries resolve calls to exception-related compiler helper
  605. functions to dummy functions that return appropriate return values. They
  606. also restore the pre-exception behavior of operator new to return NULL on
  607. out of memory conditions. Non-exception enabled versions of setjmp() and
  608. longjmp() are also provided.
  609.  
  610. Limitations:
  611.  
  612. Note: some features introduced in BC4.0 require exception handling.
  613. These include the string class, BIDS container classes, the standard
  614. OWL libraries, and RTTI.
  615.  
  616. ------------------------
  617. IDE/Integrated Debugging
  618. ------------------------
  619. Using the Microsoft DBWIN utility interferes with the Event log's ability to
  620. display those same messages. To see those messages in the Event log, either
  621. quit DBWIN or select Options|No Output in DBWIN.
  622.  
  623. DDE applications must be debugged in hard mode.
  624.  
  625. Hard-mode debugging does not work reliably under Windows NT version 3.1,
  626. and might crash the WOW session. The IDE disallows users from selecting
  627. hard mode on all stops, but setting a breakpoint on certain Windows
  628. messages might cause the debugger to go into hard mode.
  629.  
  630. --------------------------
  631. InProc servers and the IDE
  632. ---------------------------
  633. You must delete bcwdef.* files from BC++ 4.0 or 4.02 in order to use the
  634. OleRegisterServer and OleUnregisterServer tools from the IDE SpeedMenu.
  635.  
  636. --------------------------
  637. Turbo Debugger for Windows
  638. --------------------------
  639. You can use TD32 to debug under Win32s. However, to do so, you must ensure
  640. you use SVGA.DLL or equivalent support in the VideoDLL entry in the
  641. [TurboDebugger] section of TDW.INI.
  642.  
  643. TD32 can support dual monitor debugging under Win32s. Ensure that a
  644. monochrome adapter is installed in your machine and set the Mono=yes flag
  645. in the [VideoOptions] section of TDW.INI:
  646.  
  647.        [VideoOptions]
  648.        MONO=yes
  649.  
  650. ---------------------
  651. Using Tools with NTFS
  652. ---------------------
  653. When you are using Borland C++ 4.52 tools under NTFS, be aware of assumptions
  654. about file extensions. If Borland C++ 4.52 tools see an extension,
  655. they assume no default. Therefore, with "bcc32 test.1.cpp", BCC32
  656. spawns TLINK32 with "-ap c0x32.obj test.1, test.1, import32 cw32".
  657. As TLINK32 sees an extension on test.1, it makes NO assumptions about
  658. a .obj or .exe extension.  It attempts to look for test.1 (instead of
  659. test.1.obj) and to create test. (instead of test.1.exe).
  660.  
  661. Embedded blanks in filenames are not currently supported. For instance, under
  662. the Windows NT NTFS file system it is legal to have a file named
  663. "This is an interesting file name.cpp". The response file processing in our
  664. 32-bit tools cannot handle this type of file.
  665.  
  666. 16-bit tools running on NT cannot use NTFS filenames.
  667.  
  668. ---------------------------
  669. CTLDATA statements in Win32 
  670. ---------------------------
  671. Different implementations of the Win32 API require different alignment rules 
  672. applied to DLGITEMTEMPLATE data structures. For most dialog templates,
  673. this difference has no effect because most programmers do not use this
  674. statement. If, however, a dialog template uses the CTLDATA statement to
  675. pass initialization data to a custom control, the data may not be passed
  676. properly, or the dialog may fail to display properly or even at all, or the
  677. program may receive a general protection fault. Borland's resource compilers
  678. produce DLGITEMTEMPLATE data structures according to the alignment rules
  679. applied by Win32s and Windows 95. Therefore, dialog templates using 
  680. CTLDATA statements compiled using Resource Workshop, BRCC32, or BRCC may
  681. not work in Windows NT. Note that this warning applies only if a template
  682. uses the CTLDATA statement. All other templates work correctly in all
  683. known implementations of the Win32 API.
  684.  
  685. -------------------------------------
  686. Running from a Windows 3.1 DOS Prompt
  687. -------------------------------------
  688. If you run BCC or TLINK from a Windows DOS box and you get out of memory
  689. errors, increase the XMS memory (in the 'Maximum' setting) allocated for
  690. the DOS box by editing the appropriate .PIF file (usually DOSPRMPT.PIF).
  691. BCC.EXE needs about 4MB to compile medium-sized .CPP files, and might
  692. need more memory for large .CPP files with debugging information.
  693.  
  694. NOTE: You must set the 'Maximum:' setting to the amount needed, not
  695.       the 'Required:' setting.  Using the 'Required:' setting only
  696.       sets aside memory for XMS, not for DPMI services.  Thus, any
  697.       amount set in the 'Required:' setting box is unavailable.
  698.  
  699. -----------------------------------------------------------
  700. Converting Borland C++ 3.1 Windows Code to Borland C++ 4.52
  701. ------------------------------------------------------------
  702.  
  703. To get your BC++ 3.1 code to compile and run under Borland
  704. C++ 4.52, modify your code to reflect three character types
  705. where compiler errors occur when using the Borland C++ 4.52
  706. RTL includes.  Alternatively, you can use the -K2 compiler
  707. option with the RTL includes from BC++ 3.1. This option
  708. provides for only two character types. (Note that -K2, a
  709. backward compatibility switch, is supported only in the
  710. 16-bit compiler.) Also, use operator new[]() and delete[]()
  711. syntax for class arrays.
  712.  
  713. Some 32-bit to 8-bit conversions allowed by ANSI are flagged
  714. by BCC32 with "Conversion may lose significant digits in
  715. function XXXXX".  You can safely ignore this message if you
  716. are doing certain types of 32-bit to 8-bit casts (for
  717. instance, int to char) and you're not worried about losing
  718. significant digits in those cases.
  719.  
  720. ----------------------
  721. Floating-Point Formats
  722. ----------------------
  723.  
  724. Floating-point formats are a collection of formatting
  725. information used to manipulate floating point numbers in
  726. certain runtime library functions such as scanf() and
  727. atof().
  728.  
  729. This section discusses why you might get the error FLOATING
  730. POINT FORMATS NOT LINKED : ABNORMAL PROGRAM TERMINATION and
  731. tells you how to resolve it.
  732.  
  733. There are no current plans to fix this because it is not a
  734. bug. The intent is to avoid linking the floating-point
  735. formats (about 1K of overhead) when they are not required.
  736. The tradeoff is that the programmer must explicitly request
  737. that the floating-point formats be linked in for some
  738. programs that manipulate floats in a limited and specific
  739. fashion.
  740.  
  741. Because you can get this error in a number of different
  742. ways, check the following list of potential causes to find
  743. out how to resolve the error.  The causes are listed in
  744. order of most common to least common.
  745.  
  746.   1.  CAUSE:  Floating point set to <None>.  You have your
  747.       floating point option set to None when it should be set to
  748.       either Fast or Normal.
  749.  
  750.       FIX:  Set Floating Point to Fast or Normal.
  751.  
  752.   2.  CAUSE:  Either the compiler is over-optimizing, or the
  753.       floating-point formats really do need to be linked in because
  754.       your program manipulates floats in a limited and specific
  755.       fashion. Under certain obscure conditions, the compiler will
  756.       ignore floating point usage in scanf() (e.g., trying to
  757.       read into a float variable that is part of an array contained
  758.       in a structure.)
  759.  
  760.       FIX: Add the following to one source module:
  761.  
  762.            extern _floatconvert;
  763.            #pragma extref _floatconvert
  764.  
  765.   3.  CAUSE:  Forgetting to put the address operator & on the scanf
  766.       variable expression. For example,
  767.        float foo;
  768.        scanf("%f", foo);
  769.  
  770.       FIX: Change the code so that the & operator is used where it
  771.       is needed.  For example, the above code should be
  772.        float foo;
  773.        scanf("%f", &foo);
  774.  
  775. --------
  776. WinRun
  777. --------
  778.  
  779. WinRun is a utility that lets you run a Windows program in a
  780. DOS box. This utility is especially useful if you need to
  781. run Windows programs from a DOS box in order to build
  782. certain ObjectWindows OLE-enabled applications.  It
  783. requires Windows 3.1 Enhanced mode. 
  784.  
  785. On the command line, you can optionally add /a or /w or /aw 
  786. switches.  (Autodetect and Wait mode)
  787.  
  788. The install program automatically adds WinRun to your
  789. startup group.
  790.  
  791. Switches for WinRun:
  792.  
  793. If you have selected the AutoDetect mode,(either by WinRun's
  794. command line switch /a, or setting it in WinRun's system
  795. menu), you can simply type BCW in a DOS box, and BCW will
  796. launch. You can still use WR to launch an application, (for
  797. example to override the current Asynch mode setting with
  798. wr.exe's /w or /a switches) However, this switch slightly
  799. affects the loadtime of all DOS programs though it is
  800. minimal in cases where you are using a disk caching.
  801.  
  802. The Asynchronous mode (selectable through WinRun's menu or
  803. /w command line switch) causes the DOS box NOT to wait for
  804. the Windows application to finish. Instead, it will always
  805. return with an exit code of 0.  In synchronous (wait) mode,
  806. the DOS box will be suspended until the Windows application
  807. terminates, and the exit code will be propagated to the DOS
  808. box.
  809.  
  810. -----------------
  811. AppExpert and OWL
  812. -----------------
  813.  
  814. The value of the IDS_LISTNUM define in OWL has changed since
  815. BC++ 4.02.  If you have created an application in BC++ 4.0
  816. or 4.02 using AppExpert, you will receive redefinition
  817. warnings when rebuilding in BC++ 4.52.  To correct this
  818. problem, update the .RH file for your project to match the
  819. new value for this define.  Specifically, the following
  820. line
  821.  
  822. #define IDS_LISTNUM 32582
  823.  
  824. should be changed to
  825.  
  826. #define IDS_LISTNUM 32584
  827.  
  828. -------------------
  829. Online Registration
  830. -------------------
  831.  
  832. Because this product should be registered with Macmillan
  833. Publishing and not Borland, please do not use the online 
  834. registration utility. Instead, contact Macmillan Publishing 
  835. at:
  836.  
  837.   Email:  support@mcp.com
  838.  
  839.   Telephone:  (317) 581-3833
  840.  
  841.   Fax:  (317) 581-4773
  842.  
  843.   Mail:  Macmillan Computer Publishing
  844.      Attention: Support Department
  845.      201 West 103rd Street
  846.      Indianapolis, IN 46290
  847.