AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zeilenweise in Datei Schreiben

Ein Thema von Evian · begonnen am 1. Nov 2005 · letzter Beitrag vom 2. Nov 2005
Antwort Antwort
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#1

Re: Zeilenweise in Datei Schreiben

  Alt 2. Nov 2005, 16:31
Ersetzen kannst du bestimmte Zeilen so:

Delphi-Quellcode:
procedure ReplaceLines(
  s: TStrings; // Ersatzzeilen
  fileName: string; // Name einer existierenden Textdatei
  iStart: cardinal // Zeilennummer, Beginn der Ersetzung, ab 0 gezählt
);
const
  BUFSIZE = 32 * 1024;
var
  fIn, fOut: TextFile;
  fn, line: string;
  iCount, iStop: cardinal;
  bufIn, bufOut: array of byte;
begin
  SetLength(fn, MAX_PATH);
  if GetTempFileName('.', 'TMP', 0, @fn[1]) = 0
    then raise Exception.Create(SysErrorMessage(GetLastError))
    else SetLength(fn, Pred(Pos(#0, fn)));
  AssignFile(fIn, fileName);
  Reset(fIn);
  SetLength(bufIn, BUFSIZE);
  SetTextBuf(fIn, bufIn[0]);
  AssignFile(fOut, fn);
  Rewrite(fOut);
  SetLength(bufOut, BUFSIZE);
  SetTextBuf(fOut, bufOut[0]);
  iCount := 0;
  iStop := iStart + s.Count;
  while not Eof(fIn) do
  begin
    ReadLn(fIn, line);
    if (iCount < iStart) or (iCount >= iStop)
      then WriteLn(fOut, line)
      else WriteLn(fOut, s[iCount - iStart]);
    Inc(iCount);
  end;
  CloseFile(fIn);
  CloseFile(fOut);
  DeleteFile(fileName);
  RenameFile(fn, fileName);
end;

procedure TDemoForm.ButtonClick(Sender: TObject);
const
  fn = 'c:\daten\temp.txt';
begin
  with Memo.Lines do
  begin
    Clear;
    Add('123');
    Add('abc');
  end;
  // Zeilen 1 und 2 werden ersetzt, 0 bleibt erhalten
  ReplaceLines(Memo.Lines, fn, 1);
end;
saftey code musst du selbst einbauen. Die Ersetzung von nicht existierenden Zeilennummern wird einfach ignoriert.

Grüße vom marabu
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz