Space Base Space Base
+7 928 008-80-89
ru
  • en
  • es
  • Главная
  • Услуги
  • Портфолио
  • Библиотека
  • Контакты
  • Главная
  • Услуги
  • Портфолио
  • Библиотека
  • Контакты
  1. Библиотека
  2. Delphi
  3. Создание и работа с текстовыми файлами в Delphi
logo

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

26.11.2014

Когда речь идет о работе программы с текстовым файлом, подразумеваются процедуры ввода данных из файла в программу или, наоборот, запись этих данных в файл программой. Для текстового файла допустима простая работа с файлом без особых дополнительных механизмов, которые применяются для работы со специализированными файлами, такими как при загрузке данных из Excel или работе программы с базой данных. Разумеется, Delphi располагает возможностями работать с файлами с использованием компонентов. Но в данной статье рассматривается механизм прямой работы с текстовым файлом без использования дополнительных компонентов.

Итак, в общем виде, работа с файлом заключается в следующих этапах:

1. подключение к файлу – связь с внешним файлом, указание режима подключения;

2. выполнение операций записи в файл или чтения из файла;

3. завершение работы с файлом.

Подключение к файлу

Для связи программы с файлом используется специальная переменная – "Файловая переменная". Объявляется она так же как и любая переменная в Delphi. Тип это переменной может быть File для типизированных (хранящих данные определенного типа) файлов, а можно указать TextFile, что будет означать тип обычного текстового файла. Объявление переменной:

var
  f : TextFile;

В исполняемом коде программы выполняется подключение к внешнему файлу:

AssignFile(f, 'input.txt');

Команда AssignFile, выполняет связь файловой переменной с внешним файлом. Вторым параметром указывается адрес файла. Он может быть задан относительным или абсолютным. Если указать только имя файла, то программа будет пытаться обнаружить его в той же директории, где она сама и находится. Абсолютный путь указывается от корневого диска:

AssignFile(f, 'C:\myprog\input.txt');

Использование относительной директории дает возможность не привязываться к конкретным дискам и адресам. Например:

AssignFile(f, 'data\input.txt'); // во вложенной папке относительно директории с программой
AssignFile(f, '..\input.txt'); // на уровень выше директории с программой
AssignFile(f, '..\data\input.txt'); // во вложенной папке на уровень выше директории с программой

После того как выполнено подключение, выполняется процедура, устанавливающая режим работы с файлом. В основном это режим чтения или записи. Эти режимы назначаются процедурами Reset() ( для чтения) и rewrite() (для записи):

Reset(f);
Rewrite(f);

* Для команды Rewrite() следует учитывать, что при ее выполнении, она либо создает файл, указанный в файловой переменной, либо если он уже есть перезаписывает файл заново, удаляя старый без какого-то предупреждения.

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

Reset(f, 'C:\myprog\input.txt'); // чтение
Rewrite(f, 'C:\myprog\input.txt'); // запись

Операции с файлами

Для чтения из файла, необходимо назначить режим чтения и использовать команду Readln(), которая будет вводить в строковую переменную по одной строке из файла. Затем с этой переменой можно выполнить необходимые действия.

Readln(f, s);

Обычно для загрузки всех строк из файла используется оператор цикла. Для того, чтобы определить, что файл закончился используется функция EOF() (End Of File). Таким образом получается цикл, в котором последовательно в строковую переменную вводятся все строки файла и завершающийся после окончания фала:

while (not EOF(f)) do begin
  Readln(f, s);
end;

Для записи, назначение режим записи в файл и командой Writeln() производится запись по строкам.

Writeln(f, 'text');

Закрытие файла

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

CloseFile(f);

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

Чтение в переменную одного значения из файла:

var
   f : TextFile;
   s : String;
begin
   AssignFile(f, 'input.txt');
   Reset(f);

   Readln(f, s);

   CloseFile(f);
end;

Загрузить все строки файла в компонент Memo:

var
    f : TextFile;
    s : String;
begin
    AssignFile(f, 'input.txt');
    Reset(f);

    while (not EOF(f)) do begin
      Readln(f, s);
      myMemo.Lines.Add(s);
    end;

    CloseFile(f);
end;

Следует отметить, что для этой задачи проще воспользоваться командой самого компонента Memo LoadFromFile().

myMemo.Lines.LoadFromFile('input.txt');

Записать строку в файл:

var
   f : TextFile;
begin
   AssignFile(f, 'input.txt');
   Rewrite(f);

   Writeln(f, 'My text');

   CloseFile(f);
end;

Записать в текстовый файл все строки из компонента Memo:

var
    f : TextFile;
    i : Integer;
begin
   AssignFile(f, 'input.txt');
   Rewrite(f);

   for i := 0 to myMemo.Lines.Count - 1 do
       Writeln(f, myMemo.Lines[i]);
   CloseFile(f);
end;

Как и для чтения из файла в Memo, так и здесь, имеется специальная команда:

myMemo.Lines.SaveToFile('input.txt');

 

Другие материалы:

Функция DirectoryExists в Delphi, описание и примеры


Функция CreateDir в Delphi, описание и примеры


Работа с базой данных Access в Delphi


Написать комментарий

Комментарии

В комментариях запрещено публиковать рекламные материалы. Все сообщения оправляются на модерацию и будут опубликованы, если не нарушают правил сайта после проверки.


коммент.

Разработка сайтов

Корпоративный сайт
Интернет-магазин
Лендинг - одностраничный сайт
Сайт-визитка
Сайт-портфолио

Проектирование

Прототип, UX-дизайн

Дизайн

UI-дизайн
Логотип

+54 911 2801-4950

info@space-base.net
+7 928 008-80-89

Web-сайты для успешного бизнеса

Web-сайты для успешного бизнеса

Главная Услуги Портфолио События Библиотека Контакты
+7 928 008-80-89 Меню
Политика в отношении обработки персональных данных © Copyright 2014 - | Space-Base

Лучшее время начать свой проект - Сейчас!

Выбраны опции:

Отправить сообщение на:

Telegram WhatsApp

Отправляя сообщение, вы даете свое согласие на
обработку песональных данных