Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практическая работа N10.doc
Скачиваний:
3
Добавлен:
08.09.2019
Размер:
208.9 Кб
Скачать

Практическая работа 10 Работа с файлами.

1 Текстовые файлы

Текстовые файлы. Данный тип файлов предназначен для работы с текстом.

1.1 Объявление

Объявление переменной типа текстового файла происходит следующим образом:

f : TextFile;

где f- имя объявляемой переменной.

1.2 Связывание переменной с файлом

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

AssignFile(f1, 'filename.txt');

После вызова этой функции, мы можем обращаться с переменной f как с файлом filename.txt. Однако, если такого файла нет, мы получим ошибку, поэтому перед использованием связывания желательно делать проверку на наличие файла. Такая проверка проводится функцией FileExists(). Ее синтаксис следующий:

FileExists('c:\01\myfile.txt');

В качестве параметра в функцию передается адрес файла и его имя. Можно передавать только имя, но тогда программа будет искать файл в текущей директории. Функция возвращает True, если такой файл существует, и False в противном случае. Поэтому мы можем использовать ее для проверки наличия файла.

1.3 Открытие файла

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

- открытие файла для чтения (файл есть и его надо открыть для чтения):

Reset(f);

- открытие файла для перезаписи (файла нет или он должен быть перезаписан, открытие для записи):

Rewrite(f);

- открыть файл для добавления (файл есть и его надо открыть для дописывания строк в конец):

Append(f);

где f – переменная файлового типа.

1.4 Запись в файл. Чтение из файла

Чтение из текстового файла производятся с помощью процедуры ReadLn(Файл, Переменная) – считывание строки из файла в переменную.

Запись в текстовый файл производятся с помощью процедуры WriteLn(Файл, Переменная) - сохранение строки из переменной в файл.

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

while not eof(f) do

begin

ReadLn(f, s);

{здесь делаем что-то с прочитанной строкой}

end;

где f- файловая переменная, s – переменная в которую считывается строка.

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

  • Перезаписать весть файл

  • Читать с первой строки

  • Дописать что-то в конец

  • Читать и писать файл целиком (см. пункт 1.4.1)

1.4.1 Текстовый файл и компонент Memo

У всех потомков класса TStrings (TStringList, memo.Lines и т.п. ) есть методы записи и чтения в файл - SaveToFile, LoadFromFile. Преимущество - простота использования и довольно высокая скорость, недостаток - читать и писать файл можно только целиком. 1) Загрузка текста из файла в Memo:

Memo1.lines.loadfromfile('c:\MyFile.txt');      

2) Сохранение в файл:

Memo1.lines.savetoFile('c:\MyFile.txt');   

При чтение-записи таким методом действия описанные в п 1.1, 1.2, 1.3,1.5 нет необходимости. Главное, чтобы был задан путь к файлу.