www.mikrocontroller.net

Forum: PC-Programmierung CSV oder DBase ?


Autor: Karlheinz Druschel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leuts,

ich stehe vor folgendem Problem:
Ich habe hier eine Dialoganwednung mit einem Listcontrol, wobei ca. alle 
2 Minuten ein neuer Wert dazukommt.
Diese Werte muss ich nun einerseits auf der Festplatte sichern, 
andrerseits darf die Dateigröße nicht zu groß werden.
Also gehe ich mal davon aus, dass immer nur 100 Werte gesichert werden.
Im Prinzip bieten sich ja dafür ja CSV-Files an. Aber abgesehen davon 
dass ich es dabei mit CStdioFile noch nicht geschafft habe einen 
vorhandenen Eintrag zu überschreiben (er bringt dann eine Exception dass 
die Festplatte voll wäre), wäre dass ja auch keine schöne Lösung. Denn 
ich müßte ja die Wrte am Anfang überschreiben, wobei allerdings die 
chronologische Reihenfolge ja nicht mehr stimmen würde. Denn dazu müßte 
ich ja immer am Fileende anhängen, ABER die erste Zeile dann jeweils 
löschen. Wie geht das ?
Nun denke ich an dbaseIII Dateien, weil die auch noch relativ einfach zu 
handhaben sind.
Bei Codeguru habe ich auch eine Beispiel gefunden, ein Listcontrol zu 
serialisieren. Aber da muss ich ja bei jedem Eintrag das komplette 
Control sichern, auch nicht gerade elegant.

Hat jemand noch eine bessere Idee ?


Greets
Karlheinz

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Zeile (oder auch nur ein Byte) vorne aus einer Datei zu löschen 
geht nur mit komplettem Neuschreiben der Datei.

Insofern ist "Zeile hinten anhängen, und Zeile vorne löschen" langsamer 
als einfach jedesmal die Datei neu zu schreiben.

Anders gehts nur mit einem Dateiformat, das ungenutzte Bereiche 
innerhalb der Datei verwaltet und wiederverwenden kann.

Auch beachten: Beim Plattenzugriff wird am Ende sowieso immer ein ganzer 
Block geschrieben, also 512 Bytes oder 4KB auf einmal, optimierungen um 
"möglichst wenig" auf einmal zu verändern verpuffen also meist 
wirkunkgslos.

Also einfach auf den Plattencache vertrauen ;)

/Ernst

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.