Generally, the changes fall under one of these categories:
- Add missing functionality that the BDE has, especially parser functions and indexes (but the BDE has bugs with certain + and - operations)
- Better performance (in some cases, much better)
- Better compatibility with the BDE, making it a more effective replacement
- Better reliability
- Miscellaneous bug fixes
Although I committed a large number of changes over a short period of time, rest assured that I actually worked on them for about 1000 hours. Also, it is being used in a commercial product that has been thoroughly tested by professional test engineers and used by hundreds of customers daily for a period of about four years. As a replacement for the BDE, it has worked solidly and required no fixes during that period.
I could use some help with merging it into the trunk. Should there be a code review before it is merged into the trunk? I am using SmartSVN 8.6.6, but am not familiar enough with Subversion to confidently merge it on my own anyway. Revisions 329-506 are by me, we need to make sure to preserve revisions 359-360 by lploeger and revisions 454-460 by twm.
Last edit: Paul Baker 2015-05-28
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
As you can see now (https://sourceforge.net/p/tdbf/code/commit_browser), I just merged all Yours changes into trunk as single commit.
If someone will be angry, they can revert it or update it..
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I just downloaded the r515 version (I had been using 507 trunk)
I am using XE8.
In dbf_prssupp, I note a number of new functions. Problems start at about line 240, where FloatRec.Digits is now an array of bytes for which StrLen does not work). I am pretty sure this is related to the new string types.
Before I go down that rathole again, has anyone else run this with XE8 (and probably a few vesions back, as I handled this issue in my other code so long ago I forget the details, other than the overall pain), and did you have any problems?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I found a bug in the Locate function, where e.g. Table.Locate('COLUMN', 'Value', []) did not work, while an entry with Value 'Value' was actually present in Column 'COLUMN'.
The problem was caused by an issue in TMdxPage.GetEntry(). It should be implemented like:
Result := PAnsiChar(@PMdxPage(PageBuffer)^.FirstEntry)
+ (SwapWordLE(PIndexHdr(IndexFile.IndexHeader)^.KeyRecLen) * AEntryNo);
The PAnsiChar cast used to be a PChar cast, but this does not work correctly for Delphi 2009 and up (i.e. for PChar pointing to a Unicode string). Also, there is a flaw in TIndexFile.CompareKeysNumericMDX() where the value of zero is not derived correctly.
To be able to find this problem I also ran the code with Delphi 5, also requiring a couple of adaptations to the code (e.g. System.Types does not exist in D5).
Where can I upload my changes? To a branch or to the trunk?
Best regards,
Lennert.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I created a branch, /branches/paulenandrew, and committed a large number of changes affecting it.
The changes are all documented in History.txt:
https://sourceforge.net/p/tdbf/code/HEAD/tree/branches/paulenandrew/doc/history.txt
Generally, the changes fall under one of these categories:
- Add missing functionality that the BDE has, especially parser functions and indexes (but the BDE has bugs with certain + and - operations)
- Better performance (in some cases, much better)
- Better compatibility with the BDE, making it a more effective replacement
- Better reliability
- Miscellaneous bug fixes
Although I committed a large number of changes over a short period of time, rest assured that I actually worked on them for about 1000 hours. Also, it is being used in a commercial product that has been thoroughly tested by professional test engineers and used by hundreds of customers daily for a period of about four years. As a replacement for the BDE, it has worked solidly and required no fixes during that period.
I could use some help with merging it into the trunk. Should there be a code review before it is merged into the trunk? I am using SmartSVN 8.6.6, but am not familiar enough with Subversion to confidently merge it on my own anyway. Revisions 329-506 are by me, we need to make sure to preserve revisions 359-360 by lploeger and revisions 454-460 by twm.
Last edit: Paul Baker 2015-05-28
Excellent! Big thanks!
But about merge procedures and making release I'm personally can't advice anything. Let's hear community...
Git Extensions can clone a Subversion repository, and I am familiar with that. Would that work?
My experience with Git support of Subversion are very bad. I suggest do not use them.
Okay, I'll use Subversion (not Git) to merge my branch when we are ready.
Let's hear what the community has to say about merging and release.
We did not hear anything in two months. What do you suggest?
As you can see now (https://sourceforge.net/p/tdbf/code/commit_browser), I just merged all Yours changes into trunk as single commit.
If someone will be angry, they can revert it or update it..
Thanks. I am now using the trunk r515 for my project.
I just downloaded the r515 version (I had been using 507 trunk)
I am using XE8.
In dbf_prssupp, I note a number of new functions. Problems start at about line 240, where FloatRec.Digits is now an array of bytes for which StrLen does not work). I am pretty sure this is related to the new string types.
Before I go down that rathole again, has anyone else run this with XE8 (and probably a few vesions back, as I handled this issue in my other code so long ago I forget the details, other than the overall pain), and did you have any problems?
Hi all,
I found a bug in the Locate function, where e.g. Table.Locate('COLUMN', 'Value', []) did not work, while an entry with Value 'Value' was actually present in Column 'COLUMN'.
The problem was caused by an issue in TMdxPage.GetEntry(). It should be implemented like:
The PAnsiChar cast used to be a PChar cast, but this does not work correctly for Delphi 2009 and up (i.e. for PChar pointing to a Unicode string). Also, there is a flaw in TIndexFile.CompareKeysNumericMDX() where the value of zero is not derived correctly.
To be able to find this problem I also ran the code with Delphi 5, also requiring a couple of adaptations to the code (e.g. System.Types does not exist in D5).
Where can I upload my changes? To a branch or to the trunk?
Best regards,
Lennert.