Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   "Gemischte Daten" abspeichern (https://www.delphipraxis.net/194085-gemischte-daten-abspeichern.html)

sko1 16. Okt 2017 10:16

"Gemischte Daten" abspeichern
 
Hallo,

irgendwie stehe ich auf dem Schlauch:

Ich muss ein Wirrwarr an verschiedensten Informationen in eine Datei speichern Zahlen, Strings, Bilder (liegen als Stream vor) usw.

Den Ansatz, XML zu verwenden und die Streams umzukonvertieren, habe ich verworfen (bläst die Bilder auf).

Hat jemand bitte einen Denkanstoß für mich?

Ciao
Stefan

TiGü 16. Okt 2017 10:20

AW: "Gemischte Daten" abspeichern
 
Wie wäre es mit BSON?
http://docwiki.embarcadero.com/RADStudio/Berlin/de/BSON

TiGü 16. Okt 2017 10:31

AW: "Gemischte Daten" abspeichern
 
Oder die Streams vorher komprimieren?
http://www.swissdelphicenter.com/de/showcode.php?id=822
https://stackoverflow.com/questions/...ess-decompress

nahpets 16. Okt 2017 10:38

AW: "Gemischte Daten" abspeichern
 
'ne Datenbank (Access, Embedded FireBird ...)

Und darin eine Tabelle in der Form:
  1. ID - AutoInc - als technischer Schlüssel
  2. Beschreibung - String/Varchar(100) - verbale Beschreibung
  3. Type - Integer - zur Typunterscheidung des folgenden Inhalts, eventuell ein Aufzählungstyp.
  4. Wert - Blob - der Inhalt der Information
Damit könntest Du dann in der Blobspalte beliebige Inhalte ablegen, über den Typ wird entschieden, wie der Inhalt auszulesen ist.

Damit können Texte, Bilder, Zahlen, Dateien ... in einer Tabelle abgelegt werden, ohne dass für jeden "Sonderfall" eine besondere Tabelle oder sonstige Ablageform erforderlich wird.

Eine komprimierte Ablage im Blob wäre für Dateien, Texte, Bilder ... zusätzlich möglich.

sko1 16. Okt 2017 10:46

AW: "Gemischte Daten" abspeichern
 
Vielen Dank für die schnelle Hilfe!

BSON klingt nach erstem Anschauen sehe sehr interessant!
Da werde ich mal weiter forschen, Datenbank scheidet aus, es sollen "Einzeldateien" entstehen

Die Streams komprimieren wäre auch ein Ansatz, dann könnte ich ja aber gleich die fertige Datei als Ganzes komprimieren...

Ich habe jetzt erst mal genügend Ansätze zum Testen

himitsu 16. Okt 2017 11:59

AW: "Gemischte Daten" abspeichern
 
Es gibt auch von XML eine komprimierte "binäre" Version.

Und unkomprimiert, als Base64, sind Binärdaten auch nur 33% größer. (ohne Komprimierung lässt sich sowas auch locker auf annähernd 15% bekommen, wenn man mehr als 64 der ersten 128 Zeichen verwendet)
Also eigentlich fällt es kaum auf, bei den Exabyte, die wir sonst so rumliegen haben.

hhcm 16. Okt 2017 12:02

AW: "Gemischte Daten" abspeichern
 
Access oder SQLite wären Einzeldateien. Gibts noch andere gründe keine DB zu verwenden ?

nahpets 16. Okt 2017 12:12

AW: "Gemischte Daten" abspeichern
 
Unter Einzeldatei würd' ich in dem Zusammenhang verstehen:

eine Information -> eine Datei

Man müsste etwas genauer wissen, was für Informationen zu welchem Zweck hier verwaltet werden sollen, dann kann man sinnvoll über Alternative Speichermöglichkeiten nachdenken.

So ist's etwas dürftig.

Gegen eine Datenbank spricht nur:

Man müsste ggfls. das konzeptionelle Vorgehen der bisherigen Lösungsansätze überdenken ;-)

mensch72 16. Okt 2017 12:54

AW: "Gemischte Daten" abspeichern
 
mein Ansatz für "mehrere Infos pro Datensatz" gleich "eine Datei":

Ich verwende da eine normale Archivdatei als Container (meist 7z oder zip)... da sind alle Streams und Infos als Dateien drin, und künnen sogar mit Standardprogrammen geöffnet werden. Das geht mit benannten ".txt",".csv"...".xyz" Streams auch völlig im RAM ohne zusätzliche "TempFiles".

nahpets 16. Okt 2017 13:17

AW: "Gemischte Daten" abspeichern
 
Bedeutet kurz und knapp:

Aus meinem Ansatz mit Datenbank und Datensatz wird aus jedem Datensatz eine Datei. Der "Rest" kann letztlich in ähnlichem Zusammenhang in jeder Datei (= jedem Container) abgelegt werden.

Ist auch eine Möglichkeit.

Jede Datei enthält dann z. B. eine Textdatei mit den Infos aus Beschreibung und Type und zusätzlich die gepackte eigentliche Information.

Das kann man insgesamt im Programm dann fast wie eine Datenbank händeln.

Passende Klasse bauen und es wird für den Anwender recht transparent, kann in 'nem Tree, ListView, Stringgrid ... übersichtlich angezeigt und verwaltet werden ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:19 Uhr.
Seite 1 von 2  1 2      

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