Delphi вставляет текст в текстовый файл в определенной точке - PullRequest
3 голосов
/ 19 апреля 2011

Я хочу отредактировать текстовый файл.если я читаю специальную строку (скажем, // - начинаем редактировать текст здесь - //), то после этой строки я хочу вставить несколько строк, но не хочу переопределять существующие строки.это возможно с Delphi?спасибо!

образец текста:

это

файл

с текстом

// - начинайте вставлять текст здесь--//

и ничего между

образец текста после редактирования:

этот

является файлом

с текстом в нем

// - начинаем вставлять текст здесь - //

теперь есть что-то

между

и ничего между

Ответы [ 2 ]

8 голосов
/ 19 апреля 2011
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;
3 голосов
/ 19 апреля 2011

Есть несколько способов сделать это.

Простейшая версия:

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;

Вы также можете использовать другие команды ввода-вывода файла, такие как: Для чтения текстового файла:

  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 позволяет вам манипулироватьфактические байты файла.В общем, вам нужно будет прочитать, пока не найдете ожидаемый текст.Затем прочитайте заранее и кэшируйте оставшуюся часть файла, пока вы записываете новое окончание файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...