Startseite ¦  was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews ¦  sonstiges
kylix ¦  tutorials ¦  online shop ¦  fotos ¦  Add&Win Gewinnspiel


Willkommen Gast. Bitte einloggen oder registrieren.
21.05.2012, 12:33:07
Übersicht Hilfe Suche Einloggen Registrieren

+  SwissDelphiCenter Forum
|-+  German Forums
| |-+  Allgemeines Forum
| | |-+  "Professionelles" Handling eines Datenfiles
« vorheriges nächstes »
Seiten: [1] Drucken
Autor Thema: "Professionelles" Handling eines Datenfiles  (Gelesen 1255 mal)
MET
Full Member
***
Offline Offline

Beiträge: 219



« am: 11.10.2002, 17:31:26 »

Wer hat mir da eine Idee, ob und wie ich das Filehandling "professionell" machen kann?

Habe ein Programm geschrieben, das mit einem grösseren Datenfile (10MB) arbeitet. Bis jetzt habe ich die Datensätze als ShortStrings ganz konvenzionell mit WriteLn bzw. ReadLn zeilenweise verarbeitet. Dieses Vorgehen hatte den Vorteil, dass bei der Programmierung die Fileoperationen einfach zu überprüfen waren (z.B. durch Öffnen des Datenfiles mit WordPad). Was würde gewonnen, wenn der Datenfile binär wäre und was wäre das beste vorgehen dafür?
Gespeichert
BenBE
Hero Member
*****
Offline Offline

Beiträge: 1441


318219379 BenBE@xiondigital.net BenBE1987 ookyBenBE
WWW
« Antworten #1 am: 11.10.2002, 17:45:31 »

Zu 1.: Was wäre, wenn das File binär wäre?
1. Dein Programm könnte Daten schneller zugreifen, da es Zahlenwerte nicht erst zu konvertieren braucht.
2. Die Datendatei wäre um etwa 20-75% kleiner
3. Sensible Daten können einfacher geschrieben werden, da nur wenige sich mit dem Auseinander-Fitzen von Binär-Files beschäftigen
4. Das Schreiben von neuen Daten ist vereinfacht, da du Datensatz-Grenzen einfacher ansprechen kannst.

Zu 2.: Was wäre das beste Vorgehen?
1. Strukturiere deine Daten in Datensätze (Datenwert-Gruppen, z.B. Sektionen bei INIs)
2. Überlege für jedes Feld (Datenwert), welche Daten darin gespeichert werden (Boolean, Byte, Word, DWrod, Integer, Single, Double, Extended, ShortString, Texte, Weitere Records, Array, Komplexes Array, Tree, Binärdaten, ...)
3. Nutze zum Lesen Streams
4. Schreibe an den Anfang der Datei eine Signatur, die folgende Werte enthält:
Code:
2 oder 4 Zeichen, für den Anwendungsnamen

Versionsnummer (Binär oder als Ziffer) mit Angabe zu Major und Minor-Version (Keinerlei Releases oder Builds)

Datentyp-Identifikation, wenn das Programm mehrere Dateitypen speichern kann

5. (Lässt sich nicht vermeiden): Schreibe eine Routine, die Fehlerprüfungen durchführt und Fehlercodes zurückgibt (Keine Meldungen direkt in der Routine ausgeben)
6. Wenn möglich eine Prüfsumme ergänzen, um Korrektheit zu gewährleisten.
7. Feldwerte beim Öffnen evtl. korrigieren.
8. Routinen zum Lesen von älteren Binär-Format-Versionen integriert lassen (Abwärtskompatibilität)
9. Bei großen Datenmengen:
9.1. Inhaltsverzeichnis
9.2. Komprimierung (Header immer unkomprimiert, Datenlänge reinschreiben)
Gespeichert

Je komplexer das System, desto kleiner die Fehler; je kleiner die Fehler, desto häufiger ihr Auftreten!
MET
Full Member
***
Offline Offline

Beiträge: 219



« Antworten #2 am: 12.10.2002, 14:39:23 »

Vielen Dank BenBE. Diese Antwort gibt das Ziel vor. Der Weg dahin enthält noch viele Fragezeichen; dies auch nach dem ersten Sichten der Erläuterungen in der Delphi-Hilfe und den div. Forumsbeiträgen zu Streams. Es gibt verschiedene Hinweise auf Beispiele, werde einmal sehen wieweit mir die weiterhelfen ...

Zu 2.1 und 2.2:
Nehme an, dass damit der vorhandene Record gemeint ist, mit dem die Struktur des Datensatzes definiert wird?
Gespeichert
BenBE
Hero Member
*****
Offline Offline

Beiträge: 1441


318219379 BenBE@xiondigital.net BenBE1987 ookyBenBE
WWW
« Antworten #3 am: 14.10.2002, 09:48:13 »

Ja, damit sind Vorhandene Records gemeint und Daten, die thematisch zusammengehören: Z.B. steh hinter einem Offset-Feld meist gleich als nächsts eine Größenangabe der Adressierten Binärdaten (ZIP-Files und ähnliches) ...
Gespeichert

Je komplexer das System, desto kleiner die Fehler; je kleiner die Fehler, desto häufiger ihr Auftreten!
Seiten: [1] Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS