home *** CD-ROM | disk | FTP | other *** search
- {HISTORY of BTP - the Btrieve Unit for Turbo Pascal 7.0 V2.0 6/10/93 }
- (* ------------------------------------------------------------------------ *)
-
- Version 1.0 4/9/91: Initial functioning unit, released 9/5/91.
- --------------------
-
- Version 1.1 9/8/91: Corrected a problem occuring in Btrieve files that had
- -------------------- segmented keys with more than one segment. The stats
- stored by the BFile.Init constructor were not calculating the number of
- segments properly. The CreateFile function was also modified to deal with
- the same key problem. This change forces one more statement to be placed
- in any 'create file' routine. Any of the 24 key arrays not used in a file
- must have their key flags set to zero. See Create.PAS for an example.
-
- Version 1.2 9/16/91: NOT RELEASED PUBLICLY.
- -------------------- Derived a new base object, BRecMgr, from what HAD been
- my base object, BFile. It made sense to me to provide access directly
- thru an object to the basic, non-file, non-record oriented Btrieve
- operations: Begin/End/Abort Transaction, Version, Stop and Reset. This
- BLOWS compatibility with any code you wrote under prior versions of this
- unit as the BT function is now virtual. You should NOT call the ancestor
- BT function in your override...replace it completely as shown in the
- example programs and in BTP.DOC.
-
- BRecMgr has a variant record field to hold info on the version of Btrieve
- the user is running. That data is set by BRecMgr.Init.
-
- Version 1.3 10/11/91: Unit name changed to BTP. Bug fixed that would give
- -------------------- incorrect result in BFile.NumRecs if number of records
- exceeded 32,767. Made a number of "touch-up" changes to make it easier to
- use dynamic variables of the various data types in BTP. Note particularly
- that the CreateFile function now requires a second parameter, a pointer to
- a Btrieve file spec as defined in BTP.
-
- The constructors for BRecMgr and BFile now set up a string data field,
- VersionString, equal to the version number of Btrieve running in the user's
- computer. This is in addition to establishing the record field Version,
- which contains the exact bytes returned by the Btrieve version call.
-
- All example programs were modified to reflect the changes in 1.2 and 1.3.
-
- Version 1.4 10/27/91: Nomenclature of data types improved and made more
- -------------------- consistent, both within BTP and with TP6's own internal
- Turbo Vision style. TRecMgr and BFile are now separate "base" objects.
- Added BFixed and BFileExt objects, both descendants of BFile. Together
- these permit handling any standard fixed-length file, and provide complete
- support for the get/step extended calls, including handling of all the
- drudgery of constructing data buffers. This was no small task! For
- extended calls, you need simply insert your filter and extractor specs into
- the provided collections in BFileExt. The rest of the setup is transparent
- to you, being handled by the object's internal methods and your standard
- override of the BTExt function.
-
- An object of type BFileExt can freely entertain both standard BT and
- extended BTExt calls thanks to encapsulation of the position block in the
- object (see EXAMPLE2.PAS). However, I recommend use of BFileExt only if
- you are truly going to use extended calls for a particular file. This is
- because there is about 32K more overhead per BFileExt object than BFile.
- The size of a BFile object is 698 bytes. The size of a BFileExt object is
- 722 bytes, plus the size of the extended data buffer, which I default to
- 32767 bytes, plus the size of any items inserted into the two collections.
- Note that the size of a BFixed object is 5043 bytes, to hold room for a
- buffer equal to the maximum size of a fixed length record, and the maximum
- length of a key.
-
- BFile and its descendants now take an Open mode parameter.
-
- The BFile.BT virtual function is now Abstract, to assure you don't call
- it without overriding it.
-
- The BFileExt.BTExt method must be overridden, with the override calling
- the ancestor; i.e. your override must be of a standard form, and must call
- BFileExt.BTExt. This is because BFileExt.BTExt is what sets the buffer
- length and constructs the buffer for extended read calls. This is in
- contrast to BFile.BT or BFileExt.BT, which must be overridden by REPLACING
- them, as shown in the example programs and in BTP.DOC.
-
- BFileExt's data fields include two collections. The FilterSpec collection
- need not hold any objects, but the ExtractorSpec must always hold at least
- one. Now, for extended calls, you handle these data fields as follows
- (see EXAMPLE2.PAS):
- 1: HEADER is handled internally. Don't mess with it.
- 2: FILTER's fields are assigned by your program.
- 3: FILTERSPEC collection may or may not hold any objects, depending on
- your program's needs.
- 4: EXTRACTOR must be initialized.
- 5: EXTRACTORSPEC collection must hold at least one object.
- 6: EXTDBUFFER is handled internally. Don't mess with it, except to
- use it as shown in EXAMPLE2.PAS when you override BFileExt.BTExt.
-
-
- BTP 1.4 IS THE FIRST *SHAREWARE* RELEASE. The BTP product is no longer
- FreeWare.
-
- Version 1.5 11/9/91: New in this release...complete support for alternate
- ------------------- collating sequences. This required modifying the BFile
- object and its constructor, and the CreateFile function, and the addition of
- data structures for an alternate collating sequence file. A boolean field in
- BFile, HasAltCol, has been established. The CreateFile function now takes a
- third parameter, being the name of an alternate collating sequence file, if
- any.
- Also changed in this version:
- BFile has an additional field for a file's actual filespec length. This
- can be useful when cloning a file. A new function, CloneFile, has been
- added, which reduces the cloning process to a single function call, with only
- the names of the existing and new files passed as parameters. Miscellaneous
- changes in V1.5 include elimination of a redundant parameter previously
- required by the FilterSpec object's constructors. Added a variant to both
- the FileSpec and KeySpec objects to allow easier reporting of certain stats
- after a stat call.
- Some minor optimizations done here and there thruout the unit and example
- programs.
- BEST NEWS! The STATS program has been greatly enhanced. It now produces
- substantially the same output as 'BUTIL -STAT', but is a standalone program
- and can be freely distributed with your applications (unlike BUTIL) IF YOU ARE
- A REGISTERED USER of BTP.
-
- Version 1.6 11/25/91: Corrected a typo in example CREATE1.PAS. Changed the
- -------------------- CloneFile function significantly. It can now clone a
- file with supplemental indexes...and do one of the following with such
- indexes: drop them (keeping only the permanent indexes), retain them as
- supplemental indexes, or make all supplemental indexes permanent. The
- STATS program was updated only to add the ability to report on/identify
- supplemental indexes. To the best of my knowledge, the STATS program can
- now truly be said to be a COMPLETE replacement for any information reported
- by BUTIL -STAT.
-
- Version 1.7 1/11/92: RELEASED ONLY TO REGISTERED USERS. Corrected a potential
- ------------------- problem in the BFile.Init method and CloneFile functions.
- Use of typed constants versus variables would create problems due to those
- data items retaining values between calls. Replaced them w/variables. Bug
- only seemed to appear if a TP6 unit was created using BTP.TPU, and that unit
- was then used in a separate source program.
-
- Version 1.7A 2/28/92: Corrected a minor bug that could appear with Btrieve
- -------------------- files of a full 24 key segments. The CountSegments
- procedure in both BFILE.INIT and CREATEFILE() had an incorrect expression
- as a termination test in a REPEAT..UNTIL loop.
-
- Version 2.0 6/10/93: Numerous changes throughout the product.
- --------------------
- NOTE: This version breaks compatibility with prior releases in a number of
- places. Most constructors take additional parameters (owner name the
- most significant).
- 1. Rewritten to make use of several features of TP/BP 7.0, such as the
- "inherited" and "const" keywords, and the use of open arrays in at least
- one place.
- 2. Enhancements throughout the product to handle owner names. The base
- object BFile, and the CreateFile and CloneFile functions were enhanced
- to readily deal with owner names.
- 3. Added a descendant of BFile, BSized.
- 4. Added the AddSuppIdx function to the base object, BFile. This makes it
- trivial to add a supplemental index to a file. Uses its own internal
- buffers, not disturbing your "working" buffers.
- 5. Major improvements to the CreateFile function (see CREATE1.PAS and
- CREATE2.PAS) that permit Btrieve file creation with two program
- statements. This was made possible in part by the new function
- NewKeySpec.
- 6. Some nomenclature changes made for consistency.
- 7. Minor other cosmetic changes to code in the BTP unit. No known bugs, per
- se, were found or corrected.
- 8. The example and utility programs were rewritten, and in some cases over-
- hauled. The STATS, CLONE and CRUNCHx programs now deal with owner names.
- The EXAMPLEx programs are hopefully more meaningful and helpful.
-
-