Thema: Delphi Daten speichern

Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#9

Re: Daten speichern

  Alt 9. Okt 2005, 17:58
Hi,

ich würde dir eigentlich auch immer zu einem Stream raten. Die sind einfach mal recht schnell, auch wenn man das sicher auch mit anderen Mitteln hinbekommt. So richtig flink wird ein TMemoryStream wenn du auf sein Property Memory mittels Win-API zugreifst, aber (genug abgeschweift), ich glaube das ist wohl nicht wichtig.

Ja, jedenfalls kannst du so ziemlich alles was du in eine Datei schreiben möchtest auch als Array von Bytes interpretieren. Musst halt immer nur wissen wieviel Byte das hat was du als nächstes lesen möchtest.
Mit einem Datentypen TByteArray = Array of Byte kannst du dann beliebige Daten laden und entweder mittels shift und and wieder zusammensetzen oder halt die selbe Menge von Bytes in Teilen anders interpretieren (ist halt etwas casten angesagt).
An sich kann ich dir als Idee für ein eigenes Dateiformat nur dazu raten, dir mal die Tiff-Spezifikation an zu sehen. Kannst du ja für deine Zwecke entsprechend abwandeln, aber die Idee finde ich eigentlich super (sorry falls andere die auch oder vorher hatten, kenn sie erst seit Tiff).
Da gibt es einen fest header, der mit einem Offset auf sogenannte IFDs (ImageFileDirectorys) endet. Diese IFDs sind wirklich Einträge a la Inhaltsverzeichnis und bestehen immer aus einem Tag, der das Feld identifiziert (z.B. Höhe oder Breite), einem Tag der den Datentypen (String, Integer, Byte, ...) beinhaltet, die Anzahl von Elementen und zuletzt den Wert bzw. wenn größer als 32 Bit dann einen Offset zu der Position der Daten.
Klingt vielleicht etwas kompliziert und umständlich, aber so kannst du leicht flexibel bleiben und deine Datei erweitern. Grundregel ist halt, dass alles rein kann und du nur Felder auswerten brauchst, deren Identifizierung dir/deinem Reader schon bekannt ist.

Also für den eigentlichen Zugriff kann ich dir wie gesagt auch nur Streams empfehlen.

Gruß Der Unwissende
  Mit Zitat antworten Zitat