vxBase 1.07  June 2, 1992
-------------------------

IMPORTANT NOTE TO EXISTING VXBASE USERS:
----------------------------------------
   See the VXLOAD.EXE discussion below.

vxBase Installation
-------------------
	vxBase is distributed on a single diskette or on bulletin boards
as two compressed .ZIP files. The first ZIP file is vxbdoc.zip, which
contains the documentation in a Windows Write file. This file is
essential to understanding and using vxBase. If it is missing, contact
the author at the address below.  The documentation is separated from
the rest of vxBase to allow potential users to preview it before
installing and actually using vxBase. This is especially helpful to
potential users who extract vxBase from a bulletin board. They can
evaluate the system from a documentation standpoint before committing to
downloading the larger system.

	Unzip vxbdoc.zip and view or print it. The manual is more than
180 pages long. It was formatted for an Epson 24-pin printer using
standard Courier fonts. Printed manuals may be obtained for $15.00.
See the end of the documentation for ordering information.

	The second ZIP file (vxbase.zip) contains the sample source code
and Visual Basic project files, vxbase.txt which includes all of the Visual
Basic declarations for the routines in the vxBase DLL, the vxBase DLL
itself, and VXLOAD.EXE - a Visual Basic Design Mode Utility.

	If you are going to upload vxBase to a bulletin board, it must be
sent as it was received - in two ZIP files.

	When the system ZIP file is decompressed, it contains this readme.doc
file and 2 more ZIP files. These ZIP files are:

	vxbdll.zip	the vxBase DLL and vxload.exe
	vxbtest.zip	sample source code and vxbase.txt

	To install vxBase, first make a subdirectory under your \vb
directory named \vb\vxbtest and copy the vxbtest.zip file there. Unzip it
and delete the vxbtest.zip file from your hard disk. To run the sample
application it is essential that these files be in directory \vb\vxbtest
because this path is hard-coded into the sample code. If you MUST put it
somewhere else, you'll have to modify the file names in the source code to
reflect your location.

	Unzip vxbdll.zip and place the resulting files (VXBASE.DLL and VXLOAD.EXE)
in your \windows directory.

    To run the sample program, see the Sample Application section in the
manual. Remember to run vxload.exe before starting Visual Basic. 


Better Memory Management in Design Mode with VXLOAD.EXE
-------------------------------------------------------
NOTE: vxload.exe included with vxbase is a utility that simply
      loads vxbase.dll and runs in an iconized state. It is
      highly recommended that you run this program immediately 
      PRIOR to calling up Visual Basic in Design Mode. vxload
      controls the vxbase memory. Any crashes when testing a vxbase
      program in design mode will not affect the vxbase memory pool
      at all if vxload is running. Copy vxload.exe to your \windows
      directory and set it up as a group item next to your VB icon. 

      It is also suggested that you add the following two lines of
      code to your initialization procedure (somewhere after the call
      to vxInit()):

      Call vxSetLocks(FALSE)
      j% = vxCloseAll()

      vxSetLocks is described in detail below.

      Adding these two lines to the init procedure will close any
      files that were left open as a result of a Design Mode VB
      error. vxSetLocks will ensure that any open files left over
      from a crashed VB run will not have any leftover locks on
      your second and subsequent runs of the program while in Design
      Mode - and vxCloseAll will close any leftover files so you can
      start off with a clean slate.

      If you wish to use the default locking scheme in your finished
      .EXE, remove the vxSetLocks(FALSE) that you set up for design mode
      testing before compiling (and the vxCloseAll as well although
      that is not critical).

      If your vxBase program terminates abnormally (or you use the VB End
	  menu item to terminate), and then you exit Visual Basic, an 
	  attempt to close VXLOAD.EXE from the system menu that appears
	  when you click on its icon will result in a "Task Sequence Closure
	  Error". This is because your vxBase Visual Basic program never
	  called vxDeallocate, which removes Visual Basic from the vxBase 
	  task list being maintained by VXLOAD. If this happens to you,
	  simply double click the VXLOAD icon to bring the VXLOAD window
	  into view and select the EXIT menu item. Closing VXLOAD in this
	  fashion ignores the task list.
      

vxBase 1.07  June 2, 1992
-------------------------

Corrections to release 1.06
---------------------------
  (1) handle to user defined browse menu memory cleared after
      browse closed. Browse called without a user menu after
      displaying a browse that had a user menu would cause a
      General Protection Fault because second browse would
      attempt to release memory that had belonged to the first
      browse.

  (2) vxReplMemo with empty string now clears the memo block 
      reference in the dbf file.

  (3) vxFilterReset corrected to clear pcode memory handle after
      filter memory deallocation. 

Functions Added to release 1.06
-------------------------------
   The following vxEvalxxx functions have been added to return the
results of xBase expressions. To use, the declarations must be added
to your global module.

vxEvalDouble
------------
Declare Function vxEvalDouble Lib "vxbase.dll" (ByVal xBaseExpr as String, DblAmount As Double) As Integer

Purpose:
   Evaluate an xBase expression that returns a numeric value and store
   the result of the evaluation in a predefined Visual Basic double variable.

Parameters:
   xBaseExpr is a valid xBase expression that will return a numeric result.
   DblAmount is a predefined double value that will receive the result of
   the xBase expression.

Returns:
   TRUE if the expression is a valid NUMERIC xBase expression. FALSE is returned
   if the expression cannot be parsed or if the expression type is not numeric.

Example:
   ' use vxEvalDouble to calc capacity in
   ' lbs by subtracting empty weight from gross
   ' in an xBase expression instead of Vis Bas
   ' ------------------------------------------
   NumVal = 0
   If vxEvalDouble("c_gwt - c_ewt", NumVal) Then
      AirEmpty.text = Format$(NumVal, "####0")
   Else
      MsgBox "Numeric expression eval error"
   End If


vxEvalLogical
-------------
Declare Function vxEvalLogical Lib "vxbase.dll" (ByVal xBaseExpr as String, ByVal TrueFalse As String) As Integer

Purpose:
   Evaluate an xBase expression that returns a logical value and store
   the result of the evaluation in a predefined Visual Basic string. The result
   will be either ".T." for TRUE or ".F." for FALSE.

Parameters:
   xBaseExpr is a valid xBase expression that will return a logical result.
   TrueFalse is a predefined string that is 4 characters long that will receive
   the result of the xBase expression (either ".T." or ".F".).

Returns:
   TRUE if the expression is a valid LOGICAL xBase expression. FALSE is returned
   if the expression cannot be parsed or if the expression type is not logical.
   
   Notice that the integer return value is NOT the same as the result of the
   expression evaluation. If the expression is logical and evaluates as ".F.",
   the function will return TRUE but the value in the predefined Visual Basic
   string variable will be ".F.". 

Example:

   ' example of xBase logical expression evaluation
   ' ----------------------------------------------
   Eval$ = String$(4, 0)
   If vxEvalLogical("left(category,1)='C'", Eval$) Then
      EvalBox.Text = Eval$
   Else
      MsgBox "Error in logical expression evaluation"
   End If

     
vxEvalString
------------
Declare Function vxEvalString Lib "vxbase.dll" (ByVal xBaseExpr as String, ByVal StringVal As String) As Integer

Purpose:
   Evaluate an xBase expression that returns a string value and store
   the result of the evaluation in a predefined Visual Basic string.

Parameters:
   xBaseExpr is a valid xBase expression that will return a character result.
   StringVal is a predefined string that will receive the result of the xBase
   expression. It MUST be long enough to hold the xBase result.

Returns:
   TRUE if the expression is a valid CHARACTER xBase expression. FALSE is returned
   if the expression cannot be parsed or if the expression type is not character.

Example:

   ' example of xBase string expression evaluation
   ' ---------------------------------------------
   EvStr$ = String$(64, 0)
   If vxEvalString("trim(catname) + ' is category ' + category", EvStr$) Then
      JoinBox.Text = EvStr$
   Else
      MsgBox "Error in string expression evaluation"
   End If

Terry Orletsky
vxBase (512523 ALberta Ltd)
#200, 10310 - 176 Street
Edmonton, Alberta, Canada
T5S 1L3
Phone (403) 489-5994
Fax (403) 486-4335
Compuserve I.D. 70524,3723



