GrafX Software  

FlexFile III
OnLine Ordering and upgrade info at bottom of page.

To Order Page( Product will be shipped Via Federal Express )


FlexFile is a very focused tool kit for CA-Clipper programmers. Its first and main purpose is to provide a complete replacement for CA-Clipper's memo-fields with a more powerful and more efficient Variable Length Field engine. This engine has been optimized in FlexFile II to be more secure, faster, save even more space and be even easier to use.

FlexFile extends CA-Clipper's memo-fields by allowing any valid data type (with the exception of Code Blocks) to be stored in a memo-field. This includes multi-dimensional arrays and CA-Clipper or Class(y) objects. Using this feature, you can store an array of notes (or an array of objects) just as easily as a note. If you have two memo-fields in a CUSTOMER data base called Notes and Telephone, the following syntax is legal:

cNotes := "This is a normal CA-Clipper text string"

aTele := { "(305) 735-2334", "(305) 486-3649" }

REPLACE cust->notes WITH cNotes

REPLACE cust->telephone WITH aTele

In addition, FlexFile's memo-fields are not limited to the 65K byte length of its CA-Clipper counterpart. This allows the storage into a FlexFile of things like huge arrays, graphics files, word processor files and more. FlexFile comes with a host of functions to manipulate all this data.

The additional features new in version 3.0 are:

_ RDD (Replaceable Device Driver)

_16 Bit DLL

_32 Bit DLL

_Industry standard FoxPro extention FPT

_ Seamless Data Compression

_ FlexScan rapid text scanner

_ FlexHelp, a powerful yet simple Hyper Text help system

_ Extra security through diagnostic and recovery tools

_ New API (Application Programmer Interface) functions

A most powerful feature of FlexFile, its ease of use, has grown even more powerful with the RDD. Simply put, an RDD allows theprogrammer to use standard CA-Clipper memo-field syntax (as in theexample below) and still benefit from the features of FlexFile. At the same time, FlexFile has complete backward compatibility with the function based system of its earlier versions.

RDD Example:

#include ""


// With the RDD linked in, this creates a // DBF/DBV pair instead of the clunky DBF/DBT

DBCREATE("TEMP.DBF", {{"FNAME", "C", 20, 0} ,;

{"LNAME", "C", 25, 0} ,;

{"TELE", "M", 10, 0}} ,;




temp->fname := "Charles"

temp->lname := "Ives"

// Now comes the fun part. Create an array of // telephone numbers and store it in a field.

aTele := { "(305) 735-2334",;

"(305) 486-3649",;

"(305) 484-8394" }

// Now we not only get to store an array, we also // get to store it efficiently in the FlexFile.

temp->tele := aTele

Notice that in this example, the syntax that you have used in the past to manage memo-fields is identical to the syntax with which you can now harness the power of FlexFile!

All of the global CA-Clipper commands are fully functional. Some are even enhanced. For example,



This runs the standard COPY TO command of CA-Clipper, however, it also allows the programmer to import and export to different file formats. For example, if you wanted to APPEND FROM a data base that was created with the inefficient FoxPro FPT format, you could do the following:

// Assume that "slim.dbf" is a DBF/DBV pair.


// Now APPEND FROM a DBF/FPT pair that was

// created by the inefficient CDX driver.


FlexFile III Function List

V_ALIAS() Return the alias of a DBV work area

V_AND() Perform a Logical AND of two or more integers

V_BUFFERS() Get/Set the buffer size for compression and scanning

V_CLOSE() Close a DBV type file

V_CLOSEALL() Close all open DBV type files

V_CMPFILE() Compress a DOS file into a smaller DOS file

V_CMPSTR() Compress a CA-Clipper CHARACTER type variable

V_COMMIT() Commit the DOS buffers to disk

V_CREATE() Create a DBV file

V_DBV2DBV() Copy a VLF from one DBV to another

V_DECRYPT() Decrypt a string previously encrypted by V_ENCRYPT()

V_DELETE() Delete one field from a DBV file

V_ENCRYPT() Encrypt a Clipper string variable

V_ERROR() Report specific FlexFile Errors

V_EXCLUSIV() Establish Exclusive or Shared use of a DBV type file

V_EXPFILE() Expand a DOS file that was previously V_CMPFILE()ed

V_EXPSTR() Expand a string that has been V_CMPSTR()ed

V_FILE2VLF() Copy a DOS file into a VLF optionally compressed

V_FILENAME() Return the file name of a VLF file

V_FILES() Set maximum number of DBV files

V_FILLARR() Fill Clipper S87 array with DBV field

V_HANDLE() Return the DOS file handle for a DBV file

V_INTEGRITY() Test the Integrity of a FlexFile DBV

V_ISFLEX() Test if a DBF file will use the FlexFile RDD

V_ISOPEN() Determine if a file is open in an area

V_LEN() Return the length of data stored in a DBV

V_MEMOGET() Get a six byte Pointer-Field from a DBF memo-field

V_MEMOPUT() Put a six byte Pointer-Field into a DBF

V_OR() Perform a Logical OR of two or more integers

V_POKE() Write character data into a character type VLF

V_PTR() Return absolute offset of data in a DBV file

V_QRY_CHK() Validate a V_QRY_xxx() expression

V_QRY_DBF() Scan a DBF file for a string or combination of strings

V_QRY_DBV() Scan a DBV file for a string or combination of strings

V_QRY_GEN() Scan any generic file for a string

V_QRY_META() V_QRY_DBV() multi-field data search

V_RANDOM() Return a pseudo random number

V_RDDNAME() Test if the current workarea is a FlexFile RDD

V_RECOVER() Recover if V_INTERITY() fails

V_REPLACE() Replace data stored in a DBV file

V_RETRIEVE() Return data stored in a DBV file

V_SELECT() Determine or select the FlexFile DBV work area

V_SETCMP() Turn on/off or set automatic data Compression

V_SETEXT() Set a default file extension other than .DBV

V_SETKEY() Set a key or password for FlexFile encryption

V_SET_COMM() Set DOS buffer flushing automatically on/off

V_SET_RECU() Set FlexFile to enable self-referential arrays

V_STUFF() Delete and insert new data into an existing VLF

V_SUPERRDD() Set the RDD from which FlexFile will inherit

V_TOPLOCK() Obtain a field lock on the Top Pointer

V_TOPPTR() Read/Replace FlexFile pointer in a DBV header

V_TOPUNLOCK() Release any locks on the V_TOPPTR()

V_TYPE() Return the type of data stored in a VLF

V_USE() Open a Variable Length Field file (DBV)

V_VLF2FILE() Create DOS file and fill with the a VLF field

V_WALK_DBV() Step from field to field in a DBV without a DBF


Item Price Quantity
FlexFile II Via Download or Ship via Fedex $149.00
FlexFile III Via Download or Ship via Fedex $189.00

INT.gif (3958 bytes)

This button will add all items on this page with
a quantity greater than "0" to your shopping cart.




GrafX Software