![]() |
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 ? |
Re: Daten "schlau" in eine Dateispeichern
Zitat:
Alternativ könntest Du die Daten in XML speichern. |
Re: Daten "schlau" in eine Dateispeichern
Nimm mybase...is kostenlos und gut!
![]() |
Re: Daten "schlau" in eine Dateispeichern
@Snoop007: Arbeitest Du mit Filestreams? :gruebel:
|
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 |
Re: Daten "schlau" in eine Dateispeichern
Zitat:
Zitat:
![]() Noch ein Vorschlag: Textdatei z.B. mit Tab getrennt. |
Re: Daten "schlau" in eine Dateispeichern
Zitat:
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 |
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 |
Re: Daten "schlau" in eine Dateispeichern
![]() |
Re: Daten "schlau" in eine Dateispeichern
kann es sein, das die TDataset - Komponente ca. 10 - 12 mb gross ist ?
|
Re: Daten "schlau" in eine Dateispeichern
So 10 MB kommt hin.
Da sind ja auch noch Beispiele und einige MB Hilfedateien dabei. |
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 ? |
Re: Daten "schlau" in eine Dateispeichern
Hi,
ich benutze für diese Zwecke meistens ![]() Bin bis jetzt (nur kleinere Projekte) immer sehr gut damit gefahren. MfG Lutz |
Re: Daten "schlau" in eine Dateispeichern
Zitat:
Zitat:
|
Re: Daten "schlau" in eine Dateispeichern
ja wie greifst du denn auf deine strukturierten dateien zu?
file of TMyRecord ist doch nicht sooo langsam |
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 |
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. |
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 |
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 |
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 :) |
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 17:10 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