Autor Beitrag
jojo-sp
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
BeitragVerfasst: Do 19.06.08 16:28 
Moinsen,

vielleicht sehe ich vor lauter Wald die Bäume nicht mehr :-)

Ich schreibe mit folgendem Code einen Record in die Datei:

ausblenden 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

_________________
Ist der Ruf erst ruiniert, lebts sich gänzlich ungeniert...
Wilhelm Busch (1832 - 1908)
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Do 19.06.08 16:42 
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
BeitragVerfasst: Do 19.06.08 16:45 
Top

:dance2:

Danke, für die schnelle Antwort.

_________________
Ist der Ruf erst ruiniert, lebts sich gänzlich ungeniert...
Wilhelm Busch (1832 - 1908)
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Do 19.06.08 18:29 
Hallo,

Wie kann der Tipp helfen??
Du erstellst die Datei doch immer wieder neu.
ausblenden 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