Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TFileStream: Text am Anfang einfügen in Textdatei (https://www.delphipraxis.net/84406-tfilestream-text-am-anfang-einfuegen-textdatei.html)

Helmi 16. Jan 2007 15:31


TFileStream: Text am Anfang einfügen in Textdatei
 
Hallo,

mit diesem Code schreib ich in Eine Text-Datei ans Ende einen String:
Delphi-Quellcode:
  try
    FileStream := TFileStream.Create(LogFile, fmOpenReadWrite);

    with FileStream do
      begin
        //Fehler-Text
        S := ErrorText;
        S := S + #13#10;

        //
        //Am Ende der Datei schreiben (FileStream-Position = FileStream-Größe)
        Position := Size;

        //In die vorhandene Datei schreiben
        WriteBuffer(S[1], Length(S));
      end;
  finally
    //FileStream freigeben und löschen
    FreeAndNil(FileStream);
  end;
Nur wie kann ich einen String am Anfang der Datei einfügen?

SirThornberry 16. Jan 2007 15:33

Re: TFileStream: Text am Anfang einfügen in Textdatei
 
die daten liegen auf der Festplatte hinter einander. Wenn du was davon einfügen willst musst du alle Daten dahinter, versetzt neu schreiben

Helmi 16. Jan 2007 15:37

Re: TFileStream: Text am Anfang einfügen in Textdatei
 
Zitat:

Zitat von SirThornberry
die daten liegen auf der Festplatte hinter einander. Wenn du was davon einfügen willst musst du alle Daten dahinter, versetzt neu schreiben

Sir, das ist mir klar, Sir! :mrgreen:

Nur leider weiss ich nicht, wie ich das in code-form bringen kann.

SirThornberry 16. Jan 2007 15:39

Re: TFileStream: Text am Anfang einfügen in Textdatei
 
erst mit Stream.Size die Datei vergrößern. Dann die Datei Stückenweise (maximal so groß wie der buffer) ans Ende der Datei schreiben.

Helmi 16. Jan 2007 15:42

Re: TFileStream: Text am Anfang einfügen in Textdatei
 
es ist mir klar, dass man es verschieben muss
nur es nutzt mir nichts, wenn du mir schreibst, wie es sein muss
mir wäre ein code-fetzen lieber

Jürgen Thomas 16. Jan 2007 15:49

Re: TFileStream: Text am Anfang einfügen in Textdatei
 
Schau Dir einmal das Beispiel an zu Delphi-Referenz durchsuchenTStream.CopyFrom und berücksichtige, dass Du sowohl in der Quelle (bisherige Datei) als auch im Ziel (geänderte Datei) unterschiedliche Position zu setzen hast. Dann könntest Du als aktives Mitglied selbst dahinter kommen. Gruß Jürgen

Helmi 16. Jan 2007 15:51

Re: TFileStream: Text am Anfang einfügen in Textdatei
 
Ich habs jetzt mal als aktives Mitlied (wie Jürgen es gerade provokatorisch schrieb) so gelöst:
Delphi-Quellcode:
Stream_Laenge := Size;
SetLength(Buffer, Stream_Laenge);
ReadBuffer(Buffer[1], Stream_Laenge);
Position := 0;

S := S + Buffer;


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz