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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.