Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie speichert ihr? (Streams?) (https://www.delphipraxis.net/67486-wie-speichert-ihr-streams.html)

Patrick 15. Apr 2006 11:50


Wie speichert ihr? (Streams?)
 
Hallo,

Ich möchte meine Programmdaten speichern. Sagen wir ich möchte verschiedene Variablen speichern: Integer, Extended, String, array of string, boolean

Also ich würde das ganze per FileStream speichern. Damit kann ich alles so wie es ist auf die Platte schreiben. Ein Ini-File ist wegen des Array nicht geeignet und eine Typisierte Datei fällt wegen den dynamischen Strings weg.

Also per File Stream funktioniert das ganz gut. (Statt String nehme ich halt AnsiSring) Jetzt schreibe ich aber an den Anfang meiner Datei noch eine Ziffer (Integer), die angibt welche Datei-Version das ist. Wenn ich dann irgendwann auf die Idee komme mein Programm zu modifizieren und mehr zu speichern habe, möchte ich die "Alte" Datei dennoch laden können (mit dem alten Lade-Algorithmus). Aber hier setzt das ganze aus.

Was ich auch nicht ganz verstehe: Ich öffne die Datei mit dem Editor. Die Strings sind ja gut lesbar. Jetzt ersetze ich einen Buchstaben eines Strings mit einem anderen und speicher die ganze Sache. An der Länge des Strings hat sich ja nix geändert. Aber Laden kann ich diese Datei nicht mehr. Ausserdem meint er, dass sich die Datei-Versions-Ziffer verändert hat. Warum? Die Ziffer steht am Anfang des Streams. Der String aber irgendwo mitten drin?

Also ich habe das mit dem Speichern von Streams so verstenden. Jeder Datentyp wird so wie er ist auf die Platte geschreiben (mit Längenangabe). Und so kann ich ihn auch wieder laden. Oder sehe ich da was falsch?

MrKnogge 15. Apr 2006 11:55

Re: Wie speichert ihr? (Streams?)
 
Könntest du kurz dein Record und die Schreib-Prozedur posten ?
Andernfalls wäre vielleicht XML was für dich.

gruss

Hawkeye219 15. Apr 2006 12:02

Re: Wie speichert ihr? (Streams?)
 
Hallo Patrick,

Du solltest eine binäre Datei niemals mit einem Texteditor öffnen und sie dann wieder speichern. Ein Texteditor fügt unter Umständen beim Speichern Zeilenvorschübe ein, welche die Struktur Deiner Datei zerstören!

Zum Bearbeiten einer binären Datei benötigst Du einen Hex-Editor.

Gruß Hawkeye

Der_Unwissende 15. Apr 2006 12:03

Re: Wie speichert ihr? (Streams?)
 
Zitat:

Zitat von MrKnogge
Andernfalls wäre vielleicht XML was für dich.

An sich würde ich dir zu einer Datei mit Struktur raten. Da ist XML natürlich nur ein Vertreter. Das Auszeichnen mit Tags findet aber (nicht umsonst) auch in anderen Files Anwendung. So kennen z.B. auch Tiffs feste Tags, die dir Information über einen Datentyp, Anzahl der Elemente und Interpretation liefern, ähnlich sieht es z.B. auch bei ID3 aus, ....

Natürlich eignet sich XML gleichzeitig dafür etwas sowohl menschen- als auch maschinenlesbar zu machen. Dann klappt's wohl auch mit dem Editor ;-)

Gruß Der Unwissende


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz