德尔福更换一条线

时间:2013-05-24 08:13:53

标签: delphi

我有一个.txt文件,我想用新的一行替换一行。这些是步骤:

  1. 读入.txt文件
  2. 将源保存到TStringList
  3. 修改特定行中的某些数据
  4. 将新数据保存回原始文件。
  5. 我该怎么做?

3 个答案:

答案 0 :(得分:8)

像这样:

var
  Strings: TStringList;
....
Strings := TStringList.Create;
try
  Strings.LoadFromFile(FileName);
  Strings[LineIndex] := NewValue;
  Strings.SaveToFile(FileName);
finally
  Strings.Free;
end;

答案 1 :(得分:2)

使用较新的Delphi,您可以在一次调用TFile.ReadAllLines()中将文件内容作为字符串数组获取。

program TestModifyLine;  {$APPTYPE CONSOLE}
uses Types,IoUtils;

procedure ModifyLine(fn:string;Index:integer;NewText:String);
var lines:TStringDynArray;
begin
  lines := TFile.ReadAllLines(fn);
  lines[Index] := NewText;
  TFile.WriteAllLines(fn,lines);
end;

begin
  ModifyLine('test.txt',12,'hello');
end.

答案 2 :(得分:1)

如果您不想浪费内存一次加载整个源文件,可以使用TStreamReaderTStreamWriter一次读取/写入一行文件,修改所需的文件阅读之后和写之前的行。

Var
  Reader: TStreamReader;
  Writer: TStreamWriter:
  Line: String;
  LineNum: Integer;
Begin
  Reader := TStreamReader.Create(...);
  Writer := TStreamWriter.Create(...);
  While not Reader.EndOfStream do
  Begin
    Line := Reader.ReadLine;
    Inc(LineNum);
    If LineNum = ... Then
    Begin
      ...
    End;
    Writer.WriteLine(Line);
  End;
  Writer.Free;
  Reader.Free;
End;