Entwickler-Ecke
Dateizugriff - [TFileStream] überschreibt alte Daten in der Datei
jojo-sp - Do 19.06.08 16:28
Titel: [TFileStream] überschreibt alte Daten in der Datei
Moinsen,
vielleicht sehe ich vor lauter Wald die Bäume nicht mehr :-)
Ich schreibe mit folgendem Code einen Record in die Datei:
Delphi-Quelltext
1: 2: 3: 4:
| Stream := TFileStream.Create(fname, fmCreate); if Assigned(Stream) then Stream.WriteBuffer(buf, SizeOf(TOneData)); Stream.Free; |
Dieser Teil wird immer wieder aufgerufen. Da ich nicht weiß, wie viele Daten geschrieben werden, kann ich nicht direkt ein Array des Record Typs nutzen, da ich die Daten nicht erst sammeln und am Ende schreiben kann.
Soweit, so gut...
Das Problem ist jetzt aber, dass er mir immer nur den letzten buffer in die Datei schreibt; d.h. der vorherige Datensatz wird überschrieben und es steht immer nur der letzte in der Datei.
Vielleicht ist es auch einfach nur ein Gedankenfehler von mir in den 4 Zeilen :-)
MfG Johannes
Xentar - Do 19.06.08 16:42
Delphi-Quelltext
1:
| Stream.Position := Stream.Size; |
Damit springst du vor dem Schreiben von Daten ans Ende der Datei, und hängst die neuen Daten nur noch an.
jojo-sp - Do 19.06.08 16:45
Top
:dance2:
Danke, für die schnelle Antwort.
Horst_H - Do 19.06.08 18:29
Hallo,
Wie kann der Tipp helfen??
Du erstellst die Datei doch immer wieder neu.
Delphi-Quelltext
1:
| TFileStream.Create(fname, fmCreate); |
wäre nicht ein Test mit fileExists(fName) und anschliessendem erstellen oder öffnen zum schreiben, und Platzierung ans Dateiende sinnvoller??
Alternativ den Stream nicht ständig öffnen und schliessen.
Gruß Horst
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!