Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Прочитать и изменить текстовый файл строка за строкой

Delphi , Файловая система , Файлы

Прочитать и изменить текстовый файл строка за строкой

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

procedure TForm1.Button1Click(Sender: TObject);
 var
   i, z: Integer;
   f: TextFile;
   t: string;
   Data: array of string;
 begin
   if OpenDialog1.Execute then
   begin
     //Read line by line in to the array data 
    AssignFile(f, OpenDialog1.FileName);
     Reset(f);
     z := 0;
     SetLength(Data, 0);
     //Repeat for each line until end of file 
    repeat
       Inc(z);
       readln(f, t);
       SetLength(Data, Length(Data) + Length(t));
       Data[z] := t;
     until EOF(f);

     SetLength(Data, Length(Data) + 3 * z);
     //Add to each line the line number 
    for i := 1 to z do Data[i] := IntToStr(i) + ' ' + Data[i];
     SetLength(Data, Length(Data) + 2);
     //Add a carriage return and line feed 
    Data[1] := Data[1] + #13 + #10;
     i       := Length(Data[5]);
     Data[5] := '';
     SetLength(Data, Length(Data) - i);
     //create a new textfile with the new data 
    AssignFile(f, OpenDialog1.FileName + '2');
     ReWrite(f);
     //write all lines 
    for i := 1 to z do writeln(f, Data[i]);
     //save file and close it 
    CloseFile(f);
   end;
 end;

Here is the translation of the content into Russian:

Это код программирования на Delphi, который читает текстовый файл построчно, обрабатывает строки и затем пишет обработанные строки обратно в новый текстовый файл. Обработкаinvolve добавление номера строки к каждой строке, а также добавление возврата каретки и символа конца строки в начале первой строки.

Вот разбивка того, что код делает:

  1. Он открывает диалоговое окно для пользователя выбрать файл.
  2. Если файл был выбран, он читает файл построчно в массив строк, называемый Data.
  3. Для каждой строки в файле добавляет номер строки к началу строки и хранит ее обратно в массиве Data.
  4. Он добавляет возврат каретки и символ конца строки в начале первой строки в массиве Data.
  5. Создает новый текстовый файл с тем же именем, что и оригинальный файл, но с добавлением "2" в конце.
  6. Пишет все строки из массива Data обратно в новый файл.

Вот некоторые улучшения, которые можно сделать:

  • Вместо использования фиксированной длины массива, вы можете использовать динамический массив или список для хранения строк, что будет делаться проще добавлять или удалять строки по мере необходимости.
  • Вы также можете рассмотреть использование более эффективного способа чтения и записи файла, например, используя поток вместо чтения/записи построчно.
  • Код можно сделать более устойчивым, добавив проверку ошибок для обработки случаев, когда файл не может быть открыт или записан.

Вот альтернативное решение, использующее динамический массив и поток:

procedure TForm1.Button1Click(Sender: TObject);
var
  f: TextFile;
  t: string;
  Data: TArray<string>;
begin
  if OpenDialog1.Execute then
  begin
    AssignFile(f, OpenDialog1.FileName);
    Reset(f);
    SetLength(Data, 0);

    while not EOF(f) do
    begin
      SetLength(Data, Length(Data) + 1);
      Readln(f, t);
      Data[High(Data)] := t;
    end;

    CloseFile(f);

    AssignFile(f, OpenDialog1.FileName + '2');
    Rewrite(f);

    for i := 0 to High(Data) do
    begin
      Write(f, IntToStr(i + 1) + '   ' + Data[i]);
      if i < High(Data) then
        Writeln(f)
      else
        Writeln(f, #13 + #10);
    end;

    CloseFile(f);
  end;
end;

Этот код делает то же самое, что и оригинальный код, но он использует динамический массив и поток для чтения и записи файла. Он также устраняет необходимость переменной номера строки z и повторных вызовов SetLength.

Программист описывает в статье алгоритм чтения и изменения текстового файла строка за строкой с использованием языка программирования Delphi, создавая новый файл с измененными строками.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Файлы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-24 20:02:01/0.003713846206665/0