Nachdem ich letztens hier gefragt habe wie man ein Containerformat am besten aufbaut will ich hier mal mein Ergebnis vorstellen.
Kurz und bündig das ganze ist ein Simpler Container der Schreiben/Lesen und das löschen von beliebigen Speicher-Einträgen in einer Datei ermöglicht und strukturiert. Die Einträge sind über eine String-ID ansprechbar die derzeit fix auf 128 Zeichen limitiert ist, aber das war jetzt nur der Einfachheit halber und wird mit der nächsten Version geändert das beliebige IDs möglich sind.
Das Löschen von Einträgen wird so verwaltet das schlicht und einfach der Index - Eintrag der Datei gelöscht wird und der Platz in der Datei der von diesem Eintrag belegt wurde in einen Pool mit freien Speicherplätzen übergeben wird. Dieser Pool verwaltet sich selbst, fast kleine, aneinander grenzende Einträge zu größeren zusammen und stellt diesen Platz für später hinzukommende Einträge wieder zur Verfügung. Außerdem gibt es einen Shrink - Befehl der sämtliche Einträge bei Bedarf in der Datei neu anordnet und den Platzbedarf optimiert, d.H. kein ungenutzter Speicher mehr in der Datei.
Die Einträge können optional mit der zlib - Packerbibliothek komprimiert werden, um das Packen/Entpacken kümmert sich das Include.
Der komplette Unterbau der Bibliothek ist Block - Orientiert, eine sehr starke Weiterentwicklung meines ECF - Includes, dH. Simple Container - Dateien können optional verschlüsselt werden, verfügen über einen intelligenten Speichercache der die Zugriffszeit bei vielen Read -Zugriffen extrem steigern kann und können bis zu theoretisch ~8 Exabyte groß werden.
Den Einsatzzweck sehe ich in Richtung Offline-Cache usw.
In Planung sind noch ein paar Optimierungen am FreeSpaceController und ev. CRC Prüfungen für die einzelnen Einträge, sollte aber kein Problem sein das zu realisieren.
Einfach in die SC.pbi im unteren Download schauen, der Source und die Funktionen sollten gut dokumentiert und einfach zu verstehen sein.
Bei Fragen, Kritik usw. bitte einfach hier melden

Download:
http://files.cxalex.bplaced.net/secure. ... tainer.zip
Gruß, Alex