Vergleiche eine OutOfMemory Exeption mal mit "OutOfDiskSpace" , wo du anschließend noch etwas in einer LogDatei abspeichern willst...
Eine OutOfMemory Exeption kannst du eigentlich nur sinnvoll extern mit einem anderem (WatchDog)Prozess behandeln. Unter Win64 hat ja jeder
Win32 seinen eigenen "32Bit-Speicherbereich". Wenn in einem Prozess also wegen Speichermangel nix mehr geht, kümmert sich ein anderer externer Prozess dann um das "geordenete" Management der Situation.
Eigene Datenstrukturen, Klassen, Pointer auf Arrayelemente... um eine eigene Logik für "VirtualTable", "VirtualArray" und "CachedCursor" kommt man da dann nicht herum, wenn man eben nicht UniDac oder FireDac nimmt, sondern direkt mit den
DB-System ala SQlite3.dll arbeitet.
Ich weiß duraus bei 32Bit-Programmen wo von ich rede und kenne die "physischen Grenzen"...
-> wir "spielen" hier im Standard mit Tabellen, wo aktuell üblich !400Mio! Datensätze(bei uns alle Finanztransaktionsdaten von XY der letzten 10Jahre bis auf die Millisekunde genau) drin sind und da ist ein "select *" mit Scroll als Grid und/oder Chart absolut nix besonderes. Wir konnten das mit keinem normalen
SQL basierten
DBMS lösen und haben speziell dafür was eigenes mit einer aktuellen Verbeitungsrate von besser 8Mio/Records pro Sekunde bei bis 450Mio Records per Table noch immer mit Delphi2007 in
Win32 entwickelt.
=> du wills aber was universelles machen.. ergo schau dir in den Sourcen von FireDac oder UniDac an, wie die das lösen und dann kannst du dich ja entscheiden ob&wie du dein SQlite ManagementTool unter
Win32 realisierst