Delphi работа с текстовыми файлами

Текстовые файлы обеспечивают простой и удобный способ сохранения текстовых данных. Они обеспечивают простой механизм для чтения и записи численных данных, сохраненных как текст (см. Write), но более безопасно и более разумно использовать для этого структурированные записи, при сохранении чего-нибудь отличного от простых текстовых строк.

Однако текстовые файлы позволяют делать записи различной длины.

Похожие команды
Append Открывает текстовый файл, для добавления записей в файл (добавляет в конец файла)

AssignFile Связывает дескриптор файла с бинарным или текстовым файлом

File Определяет типизированный или нетипизированный файл

Reset Открывает текстовый файл для чтения, или двоичный файл для чтения/записи

ReWrite Открывает текстовый или двоичный файл для записи

Работа с текстовыми файлами в Delphi

Здесь — конец строки и — перевод каретки на новую строку. Таким образом, чтобы найти конец первой строки мы должны сканировать весь текст с целью поиска признака конца строки и перевода каретки ( и ). Это очень неудобно. А если у вас файл име­ет размер в 100 строк и вам нужно полу­чить доступ к 75-й строке? Как вы ду­маете, долго мы будем искать нужную строку? Нет, точнее сказать, что не дол­го, а неудобно.

Тут на помощь приходит объект TStrings, который является простым контейнером (хранилищем) для строк. Можно еще пользоваться более про­двинутым вариантом этого объекта TStringList. Если посмотреть на ие­рархию объекта TStringList (рис. 10.3), то мы увидим, что он происходит от TStrings. Это значит, что TStringList наследует себе все возможности объекта TStrings и добавляет в него новые.

Для работы с объектом надо объявлять переменную типа объект:

f:TStringList; //Переменная типа объект TStringList.

TP ersi stent l

Иерархия объекта TStringList (снимок из файла помощи Delphi):

Читайте также:  Ssd накопитель silicon power ace a55

Инициализируется эта переменная как всегда методом create. Никаких пара­метров не надо. Чтобы освободить память объекта и уничтожить его, применяется метод Free. Метод использования объекта показан в листинге:

f:TStringList; //Переменная типа объект TStringList. begin

f:= TStringList.Create(); // здесь можно использовать класс f.Free; end;

В этом примере только создан новый объект и сразу произведено его уничтоже­ние, без использования.

Давайте снова ВСПОМНИМ, ЧТО TStringList происходит ОТ TStrings. Использо­вать TStrings напрямую нельзя, потому что это абстрактный объект. Абстрактный объект— объект, который представляет собой пустой шаблон. Он может даже ни­чего не уметь делать, а только описывать какой-то вид или шаблон, на основе ко­торого можно выводить полноценные объекты. Вот так TStringList добавляет в TStrings свои функции так, что он становится полноценным объектом.

В результате получается, что мы не можем объявлять переменные типа TStrings и использовать этот объект, потому что это всего лишь шаблон. Это и так и не так. Переменную мы можем объявлять, но использовать сам объект не можем. Зато мы можем объявить переменную типа TStrings, но использовать эту пере­менную как объект TStringList, потому что он происходит от первого. Это значит, что код, представленный в листинге 10.9, идентичен предыдущему.

f:TStrings; //Переменная типа объект TStringList. begin

f:= TStringList.Create(); f.Free; end;

В этом примере мы объявили переменную типа TStrings, но при создании про- инициализировали ее объектом TStringList. Это вполне законная запись, потому что объект TStringList происходит от TStrings. Новая переменная f будет рабо­тать как объект TStringList, хотя и объявлена как TStrings. Главное— каким объектом переменная проинициализирована.

Такие трюки можно проводить только с родственными объектами. Они не будут рассматриваться в этой книге, хотя знать их нужно, потому что вам может встре­титься что-то подобное в чужом коде.

В разд. 7.6 мы уже познакомились с классом TStrings и его основными функ­циями, а сейчас оказывается, что это абстрактный класс и его нельзя создавать. Как же так получается? На самом деле, большинство компонентов используют именно TStringList.

Читайте также:  Что значит обновить трекер

Итак, давайте рассмотрим, как можно работать с помощью TStringList, с целью обработки текстовых файлов. Все очень просто. У него есть метод LoadFromFile, для которого нужно указать имя текстового файла. После этого через свойство strings можно получить доступ к любой строке, а в свойстве count находится число, указы­вающее на количество строк в файле. В листинге 10.10 показан пример загрузки фай­ла и работа с первыми двумя строками. Обратите внимание, что строки нумеруются с нуля.

f:TStrings; //Переменная типа объект TStringList. begin

f.LoadFromFile(‘с:filename.txt’);// Загрузка текстового файла f.Strings[0]; II Здесь находится первая строка файла f.Strings[1]; // Здесь находится вторая строка файла

Давайте напишем пример, который будет искать в файле строку "Привет, Вася". Программный код, реализующий этот пример, приведен в листинге:

f:TStrings; //Переменная типа объект TStringList. i: Integer; // Счетчик begin

f.LoadFromFile(‘c:filename.txt’); // Загружаем текстовый файл

for i:=0 to f.Count-1 do // Запускаем цикл begin // Начало для цикла

if f.Strings = ‘Привет, Вася1 then //Если i-я строка равна нужной, то

Application.MessageBox(‘Строка найдена’, ‘Поиск закончен’, MB_OKCANCEL)

end; 11 Конец для цикла f.Free; end;

Точно так же можно изменять данные в файле. Например, если вам надо изме­нить 5-ю строку на "Прощай, станция Мир", то следует внести изменения, как по­казано в листинге:

f:TStrings; //Переменная типа объект TStringList. i: Integer; // Счетчик begin

f.LoadFromFile(г с:filename.txt’); II Загружаем текстовый файл

if f.Count>=5 then 11 Если в файле есть 5 строк, то изменить f.Strings[5] = ‘Прощай, станция Мир’;

f.Add(‘Прощай’);// Добавляем новую строку

f.SaveToFile(*с:filename.txt’); // Сохраняю результат f.Free; end;

В приведенном в листинге коде, прежде чем изменить 5-ю строку, происходит проверка, есть ли в файле эти пять строк. Если окажется меньше пяти, то при по­пытке изменения данных произойдет ошибка, ведь у объекта просто не выделено достаточно памяти.

Читайте также:  Как войти в mikrotik

В этом же примере в конец файла добавляется новая строка с помощью вызова метода Add. После этого результат сохраняется в том же файле с помощью метода SaveToFile. Если не вызывать метод сохранения, то все изменения пропадут, по­тому что данные изменяются в объекте, а не в файле. Именно поэтому объект надо сохранять обратно в файл.

На этом можно закончить рассмотрение. Помните, все, что мы говорили про TStrings ранее, В равной степени ОТНОСИТСЯ И К TStringList.

В этой статье будет расмотрена работа с текстовыми файлами в среде Delphi.
Я не буду много описывать процидуры и тд. Постораюсь обьяснить все коротко и ясно для читателя!

Тип переменных.Для работы с текстовыми файлами в Delphi используется тип TextFile. Который выглидит следующим оброзом.

Доступ к текстовым файлам

Для доступа к файлу использеутся процедура AssignFile(). Обращения к процедуре:

Создание, открытие и закрытие текстовых файлов

После выполнения доступа к файлу его можно открыть процедурай Reset а тагже Rewrite.

Reset() — Эта процидура открывает существующий файл на диске.Rewrite() — Эта процидура создаёт новый файл а также очищает уже существующий файл.

После выполнения всех необходимых работ с файлом его необхадимо закрыть. Процидура CloseFile.

Чтение и запись

Процидура для записи в файл Write и WriteLn.
Синтаксис

Аналогично и для WriteLn

Запись:

Создаём файл и записываем в него любую строку.


Чтение:

Чтения из файла осуществляется процедурой: Read() или ReadLn()

В переменную типа string будут записаны данные из файла.
Программа выгледит так: