Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Работа с текстовым файлом  (Прочитано 1971 раз)

Denis_ger

  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
Работа с текстовым файлом
« : 20 Августа 2021, 16:21:14 »
Можно ли с помощью скрипта переписать строку в текстовом файле не трогая прочие строки? Не заменить весь файл, не дописать строку в конец, а именно выбрать определенную строку и переписать ее?

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1400
    • Просмотр профиля
Re: Работа с текстовым файлом
« Ответ #1 : 23 Августа 2021, 11:41:40 »
Здравствуйте.

Цитировать
а именно выбрать определенную строку и переписать ее
В текстовом файле так сделать не получится. Если текстовый файл не очень большой, то можно загрузить его в список TM_StringList, изменить нужную строку и затем сохранить список обратно в файл, например:
Создаем скрипт с типом "Глобальный модуль":
Код: (delphi)
 interface

var
  myList: TM_StringList;          // объявляем список с именем myList

implementation

initialization                    // во время запуска проекта
  myList := TM_StringList.Create; // создаём список

finalization                      // во время выключения проекта
  FreeAndNil(myList);             // !!! обязательно удаляем список

end.
Далее, в нужном скрипте используем список:
Код: (delphi)
begin
  myList.LoadFromFile('D:\Test.txt', fcpUTF8);     // загружаем файл в список
  myList[3] := 'Измененная строка';                // изменяем четвертую строку списка
  myList.SaveToFile('D:\TestChange.txt', fcpUTF8); // сохряняем список во временный файл
  DeleteFile('D:\Test.txt');                       // удаляем исходный файл
  RenameFile('D:\TestChange.txt', 'D:\Test.txt');  // переименовываем временный файл в исходный
end.
Если текстовый файл большой, то нужно использовать следующий способ:
1. Открыть исходный текстовый файл для чтения.
2. Создать временный текстовый файл для записи.
3. Построчно считывать строки исходного файла. Если считанная строка искомая, то изменить ее содержимое на нужное.
4. Записывать строки во временный файл.
5. Закрыть временный файл.
6. Закрыть исходный файл.
7. Удалить исходный файл.
8. Переименовать временный файл в исходный.


Denis_ger

  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
Re: Работа с текстовым файлом
« Ответ #2 : 25 Августа 2021, 11:48:20 »
Большой файл это какой? 2000 строк по 100 символов влезет в TM_StringList?

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1400
    • Просмотр профиля
Re: Работа с текстовым файлом
« Ответ #3 : 25 Августа 2021, 13:24:17 »
Здравствуйте.

"2000 строк по 100 символов" да, влезет.
« Изменён: 25 Августа 2021, 15:06:00 от Simple-Scada »