Forum: PC-Programmierung CSV oder DBase ?


von Karlheinz Druschel (Gast)


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

von Εrnst B. (ernst)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.