AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi eigenes Dateiformat, Effizienz erhöhen, Denkanstöße gesucht
Thema durchsuchen
Ansicht
Themen-Optionen

eigenes Dateiformat, Effizienz erhöhen, Denkanstöße gesucht

Ein Thema von hackyie · begonnen am 13. Aug 2006 · letzter Beitrag vom 14. Aug 2006
Antwort Antwort
Seite 2 von 2     12   
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#11

Re: eigenes Dateiformat, Effizienz erhöhen, Denkanstöße gesu

  Alt 14. Aug 2006, 09:27
Zitat von mkinzler:
Man könnte aber auch die Frage stellen, warum ein eigenes Format nötig ist?
Ich hatte mir auch einmal etwas Ähnliches überlegt (Briefe, e-Mails, Faxe usw. als Ablage zu einer Adressendatei speichern), bin aber davon abgekommen. Praktischer ist (in meinem Fall), die Dateien in entsprechenden Unterverzeichnissen zu speichern und ggf. als hidden/read-only zu markieren.

Wenn Du aber wirklich selbst speichern willst, schlage ich Folgendes vor:

1. Inhalte und Header in getrennte Dateien speichern: Archiv.Dat und Archiv.Dah

2. Die Inhalte werden einfach aneinander gehängt; dann ist der Dateityp auch egal. Du wirst sowieso mit FileStream o.ä. arbeiten.

3. Die Header-Datei ist eine normale Datenbanktabelle:
3a. Ich empfehle (als NET-Entwickler) DataSet i.V.m. XML-Datei.
3b. Alternativ ist jede andere Tabellenart geeignet, möglichst eine mit Index auf die laufende Nummer (die ist als PrimaryKey immer und überall dringendst zu empfehlen) und auf den Dateinamen.
3c. Wenn die Header-Datei beim Programmstart vollständig eingelesen wird, kannst Du auch mit einer Memory-Tabelle (ich hatte früher mit den Rx-Tools RxMemTable verwendet) und einer CSV-Textdatei mit der BDE arbeiten.

4. Die Header-Datei erhält etwa folgende Struktur nach Deinen Vorstellungen:
ID, Dateiname (je nach Verwendung mit oder ohne Pfad), Dateigröße, FileDateTime

5. Mit dem Index (oder im Speicher mit einfacher Suchfunktion) holst Du Dir die ID der gewünschten Datei.

6. Der benötigte Offset berechnet sich ruckzuck:
SELECT SUM(Dateigröße) AS Offset FROM Header WHERE ID < :AktuelleID Wenn zwischendurch Dateien gelöscht werden, muss dies natürlich angepasst werden, z.B. durch verschachteltes SELECT i.V.m. COUNT(*) o.ä.

Ich hoffe, das nützt Dir. Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:25 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