Hi Zvoni,
The approach you proposed is sound and has many advantages, which other contributors have highlighted.
I guess the one quality I wanted to preserve was code simplicity: keeping the entire code in Object Pascal means that, from a debugging standpoint, each line is a first-class citizen, capable of being inspected and debugged. Mixed code with SQL and Object Pascal means that to debug SQL, I have to rely on external means, stepping away from the IDE. Having extensive experience with this mixed model, I wanted to know what would happen if I kept the entirety of the code in Object Pascal.
My experience suggests that for a small data footprint, that approach works well from a time-to-market and performance standpoint. As things stand, I understand a large portion of the code. Furthermore, by overusing TStringGrid instead of other facilities to manage CSV files, I've kept my dependencies on components to a minimum, which meant that I had a greater chance to avoid mystical bugs, that is bugs in components I didn't write and I don't understand.
Are the qualities I chose to optimize for the best in all cases? Certainly not! I understand and respect the choices made by other coders implementing different use cases or who wish to optimize other qualities. Knuth called his classic tomes "The Art of Computer Science" to highlight the choices we make.
Am I fully sold on my current approach? No. My code is highly encapsulated, and the effort to switch the TstringGrid-based backend with a SQLite one would take no more than ten days (with testing) to complete.
When I started, I set out to find out if this approach is foolish, and, at this point, I would say the jury is still out, with a leaning toward "No. It depends..."