Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
Delphi 2010 Professional
|
Re: in stream nach Datum sortiert schreiben
17. Dez 2008, 12:36
Hallo bodenheim,
warum verwaltest du nicht einen zusätzlichen Index ("Inhaltsverzeichnis"), der neben dem Datum auch die Position der eigentlichen Nutzdaten im Stream enthält? Dieser Index könnte in einer weiteren Datei oder am Ende des bestehenden Streams liegen. Beim Hinzufügen eines neuen Datensatzes gehst du dann wie folgt vor:
1. Index einlesen (z.B. in eine TStringList)
2. Neuen Datensatz hinter die bisherigen Nutzdaten schreiben
3. Verwaltungsdaten für den neuen Datensatz in den Index einfügen (Datum und Position im Stream)
4. Index hinter den neuen Datensatz schreiben
Bei dieser "chaotischen" Verwaltung stehen die eigentlichen Nutzdaten zwar unsortiert im Stream, du kannst aber über den Index jederzeit eine beliebige Sortierung herstellen. Auf diese Weise musst du nur eine relativ kleine Datenmenge beim Erweitern der Datei lesen und schreiben. Auch beim eventuellen Löschen von Datensätzen bietet diese Vorgehnsweise einen Vorteil, da die zu löschenden Datensätze nur im Index als "gelöscht" markiert werden müssen. Bei einem späteren Bereinigungslauf kann dann der komplette Stream (ohne die gelöschten Datensätze) neu geschrieben werden.
Du kannst natürlich auch gleich auf eine "richtige" Datenbank (SQLite?) ausweichen...
Gruß Hawkeye
|