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