簡體   English   中英

delphi在特定點將文本插入到文本文件中

[英]delphi insert text into textfile at specific point

我想編輯一個文本文件。 如果我讀了一個特殊的行(讓我們說// - 開始在這里編輯文本 - //)然后在這行后我想插入幾行,但我不想覆蓋現有的行。 用delphi可以嗎? 謝謝!

示范文本:

這個

是一個文件

帶有文字

// - 開始在這里插入文字 - //

兩者之間沒什么

編輯后的示例文本:

這個

是一個文件

帶有文字

// - 開始在這里插入文字 - //

現在有一些東西

之間

兩者之間沒什么

var
  SL: TStringList;
  InsTextPos: Integer;
begin
  SL := TStringList.Create;
  try
    SL.LoadFromFile('c:\test.txt');
    InsTextPos := SL.IndexOf('//--begin inserting text here--//');
    if InsTextPos >= 0 then
    begin
      SL.Insert(InsTextPos+1, 'Inserting Line 2');
      SL.Insert(InsTextPos+1, 'Inserting Line 1');
      SL.SaveToFile('c:\test.txt');
    end;
  finally
    SL.Free;
  end;
end;

有幾種方法可以做到這一點。

最簡單的版本:

var 
  sl : TStringList;
  I : Integer;
begin
  sl := TStringList.Create;
  sl.LoadFromFile();
  // No you have an array of strings in memory one for each line
  for I := 0 to SL.Count -1 do
  begin
     sl.strings[I]; 
   end;
  sl.SaveToFile();
end;

您還可以使用其他文件IO命令,例如:要讀取文本文件:

  var
   t : TextFile;
  begin
    AssignFile(t,'FileName.txt');
    Reset(T);
    while not eof(t);
    begin
      Readln(T,LineOfText);
    end;
    CloseFile(T);
  end;

要寫出你想要的東西..

  var
   t : TextFile;
  begin
    AssignFile(t,'FileName.txt');
    Rewrite(T);
    Writeln(T,LineOfText);
    Writeln(T,LineOfText);
    Writeln(T,LineOfText);
    CloseFile(T);
  end;

應該注意,實際上上述兩種方法實際上只是重寫文件的全部內容。

TFileStream類允許您操作文件的實際字節。 通常,您需要閱讀,直到找到預期的文本。 然后提前讀取並緩存文件的其余部分,同時寫出文件的新結尾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM