![]() |
Handler für typisierte Dateien (Unit)
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
seit längerer Zeit ist bei mir diese Unit in Verwendung, wenn es darum geht, mehrere Daten gleichen Typs in einer Datei zu speichern. Da eine Datenbank für diese Fälle viel zu übertrieben war, habe ich sie geschrieben und möchte sie euch nicht vorenthalten... (siehe Anhang) Im Kopf der Unit kann der Datentyp festgelegt werden, der in der Datei gespeichert wird (ist ein Record). Die Routinen machen dann den Rest. Der Konstruktor bekommt als Argument den gewünschten Dateinamen und schon kann man mit > Clear() -> alle Elemente löschen > addElement(DataSet: TDataSet) -> Ein Element (DataSet) am Ende anfügen > addElement(Index: Integer; DataSet: TDataSet) -> Ein Element (DataSet) an Position Index einfügen > getElement(Index: Integer): TDataSet -> Das Element an Position Index auslesen > delElement(Index: Integer): Boolean -> Das Element an Position Index löschen (gibt zurück, ob es funktioniert hat) TDataSet ist der Record, der am Anfang der Unit definiert wurde... Wenn ihr Ideen/Kritiken/Verbesserungsvorschläge habt, immer her damit :stupid: Viele Grüße, Chris PS: Die Unit ist sehr gut kommentiert, also auch für Anfänger geeignet... ;) Edit: Oder hätte ich dies lieber in der CodeLib posten sollen? :gruebel: |
Re: Handler für typisierte Dateien (Unit)
Hat jemand Fehler gefunden?
Wenn jetzt keine Antwort mehr kommt, werte ich die Unit mal als akzeptabel/fehlerfrei... :stupid: Viele Grüße, Chris |
Re: Handler für typisierte Dateien (Unit)
Meine Anmerkungen:
1.) man sollte die Unit von den uralten Pascalfunktionen AssignFile, Rewrite, read, write,... auf die Klasse TStream umstellen. Damit ist man nicht nur auf Dateien beschränkt, sondern kann die Daten aus beliebigen Streams (z.B. TCP/IP) lesen und schreiben 2.) diese typisierten Dateien, die nur eine feste Recordstruktur mit fester Länge aufnehmen können ist Technik von Stand 1970. Wenn man viele (10 - 10000) gleichartige Recorddaten speichern/laden möchte mag das vielleicht die Methode mit dem geringsten Overhead sein, aber schon allein das Löschen eines einzigen Records verursacht grosses "Tamtam" im Speicher und auf der Platte. Die Nachteile sind gravierend:
Eine dBase-Datei hat einen Header, der grundlegende Dinge wie z.B. Anzahl Datensätze, Aufbau der Felder erklärt. Zusätzlich hat jeder Record ein Löschflag. Es gibt Editoren und Viewer für das dBase-Format. Also wie könnte man sonst seine Applikationsdaten speichern? da gäbe es XML - viel Overhead, grosse Dateien, aber sehr flexibel ![]() ![]() ![]() Structured Storage von Microsoft (im Prinzip ein Dateisystem in einer einzigen Datei) |
Re: Handler für typisierte Dateien (Unit)
gibt es eine Unit (source code) für SDXF ?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz