I’ve been working very hard the last few weeks to rewrite the internals of Behold for the sake of efficiency. I’ve written much about the details of this work, and the Beta release of Behold has basically been waiting until I complete this.
I consider this extremely important. Behold will need to load large files quickly and efficiently. Everyone is used to this because most programs “cheat” by having a database already built in their own internal format. They already have the name and place indexes pre-built and with the database. They also tend to only look at one family at a time, and the amount of data they need to load is limited. They can be fast.
My task is to load data into Behold and display it, even for very large files, fast enough to not be a concern. GEDCOM Files of a hundred megabytes should be able to be read, interpreted and indexed in a few seconds. Display should be instantaneous.
It is getting the latter to happen that has been causing me the last few months of hard labor. Taking the TRichview package, and faking it out so that it thinks the document is only the page you are viewing, the page before and the page after, has been a real challenge.
Everything in this work is new to me. I’ve been having to go into the guts of TRichview to see what it does. I’ve had to learn to intercept keystrokes and mouse movements and handle them before TRichview does. I’ve had to learn how to take over the scrollbars to fake them up to make it appear that you are on a given page in a large document. I still haven’t reimplemented printing, print preview, finding text, and some of the navigation keys.
The bottom line is that this is tough stuff. Each step involves researching a solution, and often coding, testing, recoding and retesting. Problems can occur due to very low level Windows methods interfering with each other. Then a solution needs to be researched and tried with more rewriting. This is difficult, but I am happy to be making slow and steady progress to the goal, which does appear to be achieveable.
The bad news is that in the next two weeks, I’ll again release an interim Behold version with no changes just to prevent the 90 day expiry date limit.
The good new is that I am very motivated, and I’m working hard on Behold to get these improvements in and get to the Beta as soon as is possible.