Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Beim Schreiben eines Stream bleiben reste der alten Daten
Peter18 - Mi 08.02.12 18:54
Titel: Beim Schreiben eines Stream bleiben reste der alten Daten
Ein freundliches Hallo an alle,
schon wieder bin ich auf etwas seltsames gestoßen. :( Ich schreibe eine Stringliste per Stream in eine Datei. Wenn sich die Daten ändern wiederhole ich den Vorgang. An anderer Stelle werden die Daten gelesen. Solange die Datei größer wird ist alles in Ordnung, wenn sie aber kleiner wird bleiben Reste der alten Daten stehen. Zum Glück ist es Text und keine binären Daten, also leicht zu erkennen.
Auf diese Daten greifen verschiedene Programme zu, so dass es wichtig ist diese Datei mit dem Schreiben zu sperren. Was mit löschen und schreiben nicht sicher wäre. Leider habe ich nur die API-Quellen von
Delphi 4, nicht aber die der Objekte. Vielleicht hat jemand einen Tipp, was ich tun kann.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure WriteLst( SG : TStringGrid; FPath : String ); var SL : TStringList; I : Integer; fs : TFileStream;
begin SL := TStringList.Create; SL.Add( '[Daten]' ); for I := 0 to SG.RowCount - 1 do SL.Add( SG.Rows[ I ].CommaText ); fs := TFileStream.Create( FPath, fmOpenWrite ); SL.SaveToStream(fs); fs.Free; SL.Free; end; |
Dank Euch im Voraus
Peter
jaenicke - Mi 08.02.12 19:17
Setze nach dem Schreiben Size des FileStreams auf Position des FileStreams, damit alle folgenden Daten abgeschnitten werden. ;-)
Gausi - Mi 08.02.12 19:18
Nutze doch einfach die SaveToFile-Methode der Stringlist, und spare dir den eigenen Stream.
Peter18 - Mi 08.02.12 20:10
Hallo Gausi,
Danke für Deine Antwort! Leider hat sie den Nachteil, dass ich nicht steuern kann, ob andere Programme zugreifen können oder nicht.
Hallo jaenicke,
Dank auch Dir. Du meinst
fs.Size := fs.Position;?
Grüße von der Nordsee
Peter
jaenicke - Mi 08.02.12 20:47
Ganz genau. ;-)
Peter18 - Do 09.02.12 14:57
Hallo jaenicke,
nochmals danke, sieht gut aus. :D
Grüße von der sonnigen Nordsee
Peter
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!