Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Daten "schlau" in eine Dateispeichern (https://www.delphipraxis.net/27406-daten-schlau-eine-dateispeichern.html)

Snoop007 9. Aug 2004 14:59


Daten "schlau" in eine Dateispeichern
 
Hi,
in vielen kleinen programmen hab ich das selbe kleine übel,
daten, die der benutzer eingegeben hat müssen gespeichert werden.
dabei können schon an die hundert hinzukommen

da ich keine datenbank verwenden möchte ( gekaufte ohne BDE zu kostspielig, BDE zu gross )
benutze ich meist struckturierte dateien ; jedes mal das gleichen
datensatz hinzufügen, datensatz aktualisieren, datensatz löschen

da doch schon paar datensätze gespeichert werden sollen frage ich mich, wie ich die performance der gespeicherten daten ( das auslesen ) erhöhen könnte

wie macht ihr das ?

Bernhard Geyer 9. Aug 2004 15:04

Re: Daten "schlau" in eine Dateispeichern
 
Zitat:

Zitat von Snoop007
da ich keine datenbank verwenden möchte ( gekaufte ohne BDE zu kostspielig, BDE zu gross )

Es gibt doch auch kostenlose BDE-Ersatz-Datenbanken. Z.B ADS im Lokal-Betrieb.

Alternativ könntest Du die Daten in XML speichern.

Neuni 9. Aug 2004 15:09

Re: Daten "schlau" in eine Dateispeichern
 
Nimm mybase...is kostenlos und gut!

http://www.delphi-source.de/tutorials/index.php?cat=6 <-- Da is das erklärt!

Dannyboy 9. Aug 2004 15:22

Re: Daten "schlau" in eine Dateispeichern
 
@Snoop007: Arbeitest Du mit Filestreams? :gruebel:

Snoop007 9. Aug 2004 15:27

Re: Daten "schlau" in eine Dateispeichern
 
Hi,
eigentlich wollte ich keine datenbank verwenden, da diese das programm zu sehr aufblähen

xml, dann müsste ich die ms komponente benutzen, die ich dann mitgeben müsste

momentan hab ich immer mit strukturierten bzw. typerisierten daten gearbeitet
direkt mit filestreams, ne hab noch keine grossen erfahrungen damit

nur zu info ich benutze delphi 5 prof

Bernhard Geyer 9. Aug 2004 15:31

Re: Daten "schlau" in eine Dateispeichern
 
Zitat:

Zitat von Snoop007
eigentlich wollte ich keine datenbank verwenden, da diese das programm zu sehr aufblähen

ADS sind 2 DLL's und 2 Ini-Dateien mit 1,5 MB. Also relativ klein

Zitat:

Zitat von Snoop007
xml, dann müsste ich die ms komponente benutzen, die ich dann mitgeben müsste

Nur wenn Du MS-XML verwendest. OpenXML (Ist z.B. alternativer Parser in D7) benötigt keine Verteilung (Ist 100% Delphi).

Noch ein Vorschlag: Textdatei z.B. mit Tab getrennt.

eddy 9. Aug 2004 15:38

Re: Daten "schlau" in eine Dateispeichern
 
Zitat:

Es gibt doch auch kostenlose BDE-Ersatz-Datenbanken. Z.B ADS im Lokal-Betrieb.
Hallo Bernhard Geyer,

hast Du mal einen Link auf die Stelle zum Download. Ich hab' schon auf den Seiten von ADS nachgesehen, weiß aber nicht, welche Datei/en ich herunterladen muß.

mfg
eddy

Snoop007 9. Aug 2004 15:41

Re: Daten "schlau" in eine Dateispeichern
 
1,5 mb finde ich schon recht viel, für meistens nur kleine programme
eine einfache struckturierte datei ist mir beim auslesen etwas zu langsam
( evtl. eine struckturierte datei an der etwas gefeilt wurde, das man sie schneller auslesen kann )
OpeXML werd ich mir mal näher angucken, obwohl xml dateien einen etwas zu grossen overhead haben
( ich hab nur delphi 5 prof und 6 personal )
daher fällt auch Mybase für mich flach

Bernhard Geyer 9. Aug 2004 15:42

Re: Daten "schlau" in eine Dateispeichern
 
Advantage Developer Login -> Zugang beantragen (kostenlos) und TDataset-Nachfolger downloaden (direkter Link nicht möglich)

Snoop007 10. Aug 2004 09:56

Re: Daten "schlau" in eine Dateispeichern
 
kann es sein, das die TDataset - Komponente ca. 10 - 12 mb gross ist ?

Bernhard Geyer 10. Aug 2004 10:04

Re: Daten "schlau" in eine Dateispeichern
 
So 10 MB kommt hin.
Da sind ja auch noch Beispiele und einige MB Hilfedateien dabei.

Snoop007 10. Aug 2004 10:13

Re: Daten "schlau" in eine Dateispeichern
 
ich habe dann die befürchtung, dass das programm wieder überdemensional wächst

mal ab von (desktop )datenbanken, mir geht es nur um den schnellen zugriff auf die gespeicherten daten wenn ich z.b. daten als eine strukturierte datei speichere, wie könnte ich den zugriff auf einen datenblock, der z.b. als index deklariert wurde, optimieren ?

lume96 10. Aug 2004 10:24

Re: Daten "schlau" in eine Dateispeichern
 
Hi,

ich benutze für diese Zwecke meistens SQLite. Es wird nur eine DLL (SQLite.dll) von zirka 220kb benötigt.

Bin bis jetzt (nur kleinere Projekte) immer sehr gut damit gefahren.

MfG
Lutz

Bernhard Geyer 10. Aug 2004 10:37

Re: Daten "schlau" in eine Dateispeichern
 
Zitat:

Zitat von Snoop007
ich habe dann die befürchtung, dass das programm wieder überdemensional wächst

Ein paar 100 kByte werden es schon

Zitat:

Zitat von Snoop007
mal ab von (desktop )datenbanken, mir geht es nur um den schnellen zugriff auf die gespeicherten daten wenn ich z.b. daten als eine strukturierte datei speichere, wie könnte ich den zugriff auf einen datenblock, der z.b. als index deklariert wurde, optimieren ?

Da habe ich kein Eisen im Feuer. Schon Jahre nichts mehr ohne DB, Ini oder XML gemacht.

ripper8472 10. Aug 2004 11:48

Re: Daten "schlau" in eine Dateispeichern
 
ja wie greifst du denn auf deine strukturierten dateien zu?
file of TMyRecord ist doch nicht sooo langsam

Snoop007 10. Aug 2004 12:01

Re: Daten "schlau" in eine Dateispeichern
 
da ich strukturierte dateien benutzen möchte, und keine typerisierten, benutze ich keinen typen

das problem ist, das die daten in einer liste gespeichert sind, vom prinzip ok, aber wie könnte ich die daten gut abspeichern damit ich recht schnell auf einzelne datenblöcke zugreifen kann ?
ich dachte schon an eine baumstruktur allerding ist mir die realisierung nicht ganz so klar

ripper8472 10. Aug 2004 23:55

Re: Daten "schlau" in eine Dateispeichern
 
eine gut strukturierte datei hat schon etwas von einem dateisystem oder eine datenbank.
-> google mal nach linux dateisystemen, das ist recht informativ

wenn du verschieden große datensätze hast, dann würd ich einen index am anfang bevorzugen, der absolute sprunglängen zu den einzelnen knoten bietet. so brauchst du erstmal nur den index einlesen (mit einem rutsch direkt in den speicher?) und dann bei bedarf die datensätze rauslesen (open, seek, read, close).
die einzelnen knoten würde ich mit einer längenangabe des jeweiligen datensatzes einleiten, damit du gleich weißt, wieviel du aus der datei lesen musst.

ich weiß allerdings nicht konkret, wie deine datensätze beschaffen sind, also wird das genaue konzept bei dir liegen.

Snoop007 11. Aug 2004 10:49

Re: Daten "schlau" in eine Dateispeichern
 
ich hatte mir auch überlegt daten mit einem index zu bestücken, allerdings wüsste ich nicht, wie ich das dann abspeichern sollte und wie ich auf die daten zugreifen sollte

ich guck mir das mal in google an

franktron 11. Aug 2004 12:03

Re: Daten "schlau" in eine Dateispeichern
 
Das ist nciht schwer es gibt 2 möglichkeiten.

1. eine etxra Datei
2. Am Anfang der Datei die grösse des Indexses Speichern z.b. Typ Word also 4 Byte dann den Index und dann die eigentlich Datei

Snoop007 13. Aug 2004 13:46

Re: Daten "schlau" in eine Dateispeichern
 
ich hab mir nu eine möglichlkeit überlegt, ich speichere den index datensatz komplett nochmal neu ab
aber die lösung finde ich ehrlichgesagt nicht gerade prickelnt, allerdings kann ich so sehr schnell auf die daten zugreifen zumindest auf den index :)

MacGuyver 13. Aug 2004 16:00

Re: Daten "schlau" in eine Dateispeichern
 
Moin auch!

Ich meide Datenbanken komplett, ist mir zu nebulös. Eine extra Indexdatei ist doch voll gut. Einmal eine fette Klasse schreiben und gut. Schon brauchst du nur einmal ableiten und den Index basteln lassen. Den Index kannst du dann auch auf untypisierten Dateien laufen lassen. Wenn du ungleiche Datensatzlängen verwenden willst, kann ich dir nur anraten als erstes einen Integer mit der Satzlänge in die Datendatei zu schreiben. Vielleicht noch einen kleinen Header, damit die Klasse merkt, daß etwas faul ist. Beim Initialisieren wird geprüft, ob die Indexdatei vorhanden ist, und wenn nicht wird erstellt. Geht voll geil, habe ich bis jetzt aber nur auf TP 7.0 verwendet. Bis jetzt brauchte ich nur Ini-Dateien in Delphi. Für meinen TinySafe (Ganz leichte SourceSafe-Variante) habe ich Textdateien bis zum Abwinken verwendet. Geht auch voll gut ab. Mit TStringList kann man Datenmengen in dem Bereich auch schnell verarbeiten.
Wieviel Arbeit du dir machen willst, mußt du wissen.

Einen Datenbankfreien Gruß

Stefan


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:15 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