FormulaBuilder Update History

[* BETA VERSION 0.5 -----------------------------------------------------*]

=================
December 18, 1995
=================

- a subtle bug in the type compatibility code was found and fixed.
  In certain cases, it would conclude that strings and integers were
  type compatible

- Forced Windows 80x87 emulation code to be linked into DLL

- Bug Fix : Parser code would call variable identification routines twice.

- Callback prototypes changed. Check the .HLP file

- FBFreeExpression in Visual Basic header file  - handle was passed
  incorrectly by reference. Now passed by value

- fixed various prototypes in the C/C++ header file

- FBCopyValue function added

- FBStrlcpy renamed to FBStrncpy to avoid confusion for C/C++ programmers

- OnFindVariable, OnFindFields, OnGetVariable, OnSetVariable,
  OnSetVariable, OnSetField Events added to Delphi Wrapper Classes. See
  the .HLP for documentation.

- Bug Fix. Financial functions corrected. The code was derived from various
  sources and and parameter orders got swapped. Calls now mirror
  Quattro Pro 3.0, with the exception of NPV (see .hlp)

- Added type vtANY. Allows a variable of any type to be passed to
  or returned from functions.  Because of this the following functions
  have been changed to reflect this capability

  IIF(condition,trueExpr,falseExpr) now returns any type, and the last
  2 arguments may be of any type

  ChooseStr and ChooseNum have been replaced by
  Choose(index,expr1,expr2,expr3....)

- All strings, including function names, have been moved to string resources
  to ease localization. Resource scripts have been added so you can modify
  the strings for your locale.

- Delphi demo updated. Extensibility demo makes a bit more sense....

- TComponent subclasses of the Delphi wrapper classes are being tested.

- Exprlist.txt updated with financial functions

- im still working on C/C++ and Visual Basic examples. i just received
  Borland's new compiler and Microsoft's VC++ 2.0 (day jobs do have benefits !)

- The product at this point has all the features scheduled for the version
  1.0 release. Barring bug fixes, glaring ommissions, or absolutely 
  irresistable ideas from beta testers, the API is fixed and stable.

===========
Jan 1, 1996
===========

- Type checking code made more accurate

- Delphi : LastErrorString renamed to StatusText in TExpression class

- Fixed bug in DLL code which returned an incorrect error code on type
  conversion errors.

- Fixed internal variable processing. Used to cause infinite recursion when
  used from TExpression.

- Delphi : Added DefaultVarProcessing property to TCustomExpression to control
  whether FormulaBuilder handles variables internally, or whether the Onxxx
  variable handling events get called.

- Delphi : Changed SetVariable to SetVarFromString, GetVariable to GetVarAsString.
  Both have been made private.

- Delphi : Added property StringValues[const vname : TVarname] : string to allow
  read/write access to the string representation of variable values.

- Delphi : Added write access methods for the event properties. This ensures that
  the callbacks implemented in the Delphi wrapper units only get called for valid
  event instances.

===========
Jan 2, 1996
===========

- Bug Fix : Type mismatches were detected
  but an incorrect error code was returned.

===========
Jan 4, 1996
===========

- Bug Fix : Fixed a memory leak in the DLL


===========
Jan 7, 1996
===========

- The internal evaluator class was not properly releasing memory in its
  destructor. Fixed.

- STR function now takes any type and returns its string representation

===========
Jan 9, 1996
===========

- Extensive updates to the online help. Section on Visual Basic added.
  Delphi section greatly expanded

- FBGetXXXResults, FBGetXXXVariable and FBSetXXXVariable added to enhance
  Visual Basic support

============
Jan 13, 1996
============

- Bug Fix : An erroneous error was reported on parenthesized terms.

- Bug Fix : GPFs would occur in FBInitExpression if a NULL/NIL was passed
  as a parameter descriptor for a function with 0 parameters

- New optimization feature , constant folding, added

- Added Delphi unit with example code from the Help File

============
Jan 18, 1996
============

- Delphi : Import unit now explicit. The DLL loads only when the first
  TExpression instance initializes, and releases after the last TExpression
  Frees.

- Delphi : Classes are now components with the appopriate palette bitmaps.
  The registration unit is FBREG.PAS. Install into compoonent palette as
  usual.

- Delphi : Added TDSFilter - a no-code dataset (actually datasource) filter
  based on Uli Zindler's DBFiltUZ

- Delphi : Added TDSFilterExpression and TDBFilterExpression. These are subclasses
  of TDSExpression and TDBExpression respectively which permit only boolean
  expressions


============
Jan 20, 1996
============

- Field callbacks eliminated. Fields & variables are both handled in variable
  callbacks. A field is recognized in a callback by the fact that the varname
  parameter still contains the field parameters '[' and ']'

- Delphi : DefaultVarProcessing property eliminated. Replaced with UseEvents
  property

- Internally managed variables can now peacefully co-exist with variables
  handled by the ONXXXVariable events or callbacks.

============
Jan 23, 1996
============

- Delphi : Enhanced component help.

- Delphi : Created FBUILDER.KWF. Tested and works in Delphi Multi-Help system.
  Components now have popup help available from the Object inspector

- Delphi : modified example projects to use components.

- Constant folding optimization witheld to allow further testing. Will be
  re-introduced in version 2.0 along with short-circuit boolean evaluation
  ( currently being tested )

============
Feb 28, 1996
============

- Delphi : Added TRTTIExpression, and associated support routines

- Bug Fix : A variable name which appeared as the first parameter of a function
  would not be recognized if it immediately followed the left paren with no
  spaces.

- YGB's new address is 103515.1757@compuserve.com

=============
March 8, 1996
=============

- Bug fix. Parenthesized terms which appeared as the last item of the last
  parameter of a function would cause an erroneous EXPR_MISSING_OPERAND.
  For example

     sin( pi * (1 + pi))

  would cause an error whereas

     sin( (pi + 1) * pi )

   would be handled correctly

- Improved detection of paren mismatches

- FBInitExpression now returns a long integer value

- Delphi : InitFBuilder (FBCALC.PAS) now raises an exception if DLL won't load

- Bug Fix. Delphi : FreeFbuilder (in FBCALC.PAS) would not unload the DLL when
  the reference count in the FBCALC unit reached 0. Also added code to ensure
  that the DLL does not unload if it is active in the Delphi design environment.

- Moved error text strings to string table resources

- Delphi - xxxResult properties of TExpression changed to AsXXX to conform
  to general Delphi naming conventions.

- Visual Basic : Calling FBPeekVarVB would cause a GPF. Fixed. Also added
  a Parameter, vtype, to return the variable's type

- Bug Fix : FBSetVarFromString returned an undefined error if the function
  was successful

- Added much improved random number generator

- Bug Fix : incorrect parameter count passed to callbacks for function call
  with no parameters

- ROUND() now takes an optional second parameter specifying the number of
  decimal places

- Integer divide by zero now caught in DLL

- Bad expressions in EXPRLIST.TXT corrected

- Bug Fix : Domain errors on functions (eg. ACSC) now reported correctly

- Visual Basic example improved. Now includes graphing demo

[* RELEASE 1.0 ------------------------------------------------------------*]


clayton collie
YGB Software, Inc
