home *** CD-ROM | disk | FTP | other *** search
- This file is only useful to people who have already made the ACCESS.BIG
- modifications to their Turbo Toolbox. If you have not made those
- modifications, you ONLY need the file ACCESS.BIG, as that file has also been
- updated with these changes.
-
- This second revision fixes a nasty bug pointed out to me by David J. Lewis
- 70105,1242. One effect of the bug was that if an index file was opened with a
- key length other than the constant MaxKeyLen, everything would go up in
- smoke...
-
- ... The second effect should have caused the modifications to fail entirely,
- and since this was not the case, I remain somewhat puzzled. Let me repeat
- that this modification is STILL LIKELY TO CONTAIN BUGS!! If you are looking
- for adventure, or you like beta-testing things, or if you're absolutely
- desperate for more that 65535 records in your files, this is for you.
-
- - Bela Lubkin
- Borland International Technical Support
-
- In ACCESS.BOX:
-
- Right after
- Const
- X65536 = 65536.0; { For integer version, change to 1 (NOT 1.0) }
- add
- RefTypeSize = 6; { MUST be 2 for integer version, 6 for real version, or
- 8 for 8087 real version (or 1 for byte version!) }
-
- In procedure TaPack, change
- Move(Page.ItemArray[I],P[(I - 1) * (KeyL + 5) + 3],KeyL + 5);
- to
- Move(Page.ItemArray[I],P[(I - 1) * (KeyL + 2*RefTypeSize + 1) +
- RefTypeSize + 1],KeyL + 2*RefTypeSize + 1);
-
- In procedure TaUnPack, change
- Move(Page.ItemArray[I],P[(I - 1) * (KeyL + 5) + 3],KeyL + 5);
- to
- Move(P[(I - 1) * (KeyL + 2*RefTypeSize + 1) + RefTypeSize + 1],
- Page.ItemArray[I],KeyL + 2*RefTypeSize + 1);
-
- In procedure MakeIndex, change
- K := (KeyLen + 5)*PageSize + 3;
- to
- K := (KeyLen + 2*RefTypeSize + 1)*PageSize + RefTypeSize + 1);
-
- In procedure OpenIndex, change
- K := (KeyLen + 5)*PageSize + 3;
- to
- K := (KeyLen + 2*RefTypeSize + 1)*PageSize + RefTypeSize + 1);
-
- NOTES:
- Your source files are now functionally equivalent to what you could have
- generated from an original set of *.BOX combined with the new version of
- ACCESS.BIG in DL1. They are not exactly the same, however. To make them
- exactly the same (and also squeeze a few bytes and a few microseconds out of
- the code), change every occurrence of SizeOf(RefType) to RefTypeSize (all
- in ACCESS.BOX).
-
- There are now 2 things to change if you want to switch between integers,
- reals, 8087 reals, or ? bytes ? for your data reference type. Not only do you
- have to change RefType (automatic change between normal and 8087 reals is done
- by the compiler, actually). You also have to change the constant RefTypeSize
- to the value of SizeOf(RefType). (Unfortunately you can't just say Const
- RefTypeSize=SizeOf(RefType)).
-
- Please report any bugs or interesting facts to me or Sysop Larry Kraft of
- the Borland SIG on CompuServe.
- - Bela Lubkin
-