Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания к выполнению лабораторных работ №6-10 по дисциплине. Новикова И.А., Хорошилов В.Н.doc
Скачиваний:
8
Добавлен:
30.04.2022
Размер:
784.9 Кб
Скачать

Лабораторная работа № 10

Разработка программного интерфейса и работа с файлами.

Цель: научиться использовать компоненты TOpenDialog, TsaveDialog, TBitBtn, TGroupBox, TRadioButton, TCheckBox, TEdit. Отработать приемы работы с файлами.

1. Теоретическая часть

Под файлом понимается именованная область внешней памяти ПК (жесткого диска, дискеты, диска CD-ROM).

Любой файл имеет три характерные особенности. Во-первых, у него есть имя, что дает возможность программе работать одновременно с несколькими файлами. Во-вторых, он содержит компоненты одного типа. Типом компонентов может быть любой тип Object Pascal, кроме файлов. Иными словами, нельзя создать "файл файлов". В-третьих, длина вновь создаваемого файла никак не оговаривается при его объявлении и ограничивается только емкостью устройств внешней памяти.

Файловый тип или переменную файлового типа можно задать одним из трех способов:

<имя> = File of <тип>;

27

<имя> = TextFile;

<

34

имя> = File;

Здесь <имя> - имя файлового типа (правильный идентификатор); File, of - зарезервированные слова (файл, из); TextFile - имя стандартного типа текстовых файлов; <тип> - любой тип Object Pascal, кроме файлов.

В зависимости от способа объявления можно выделить три вида файлов:

• типизированные файлы (задаются предложением File of...);

• текстовые файлы (определяются типом TextFile);

• нетипизированные файлы (определяются типом File).

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

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

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

Файловая переменная связывается с именем файла в результате обращения к стандартной процедуре AssignFile:

AssignFile (<ф.п.>, <имя файла>);

Здесь <ф.п.> - файловая переменная (правильный идентификатор, объявленный в программе как переменная файлового типа); <имя файла> - текстовое выражение, содержащее имя файла.

Инициировать файл означает указать для этого файла направление передачи данных. В Object Pascal можно открыть файл для чтения, для записи информации, а также для чтения и записи одновременно.

Для чтения файл инициируется с помощью стандартной процедуры Reset:

Reset (<ф.п.>);

Здесь <ф.п.> - файловая переменная, связанная ранее процедурой AssignFile с уже существующим файлом.

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

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

var

F: File;

IsFile: Boolean;

begin

AssignFile(f,'my file.dat');

try

Reset(F);

IsFile:= True;

except

IsFile:= False;

end;

if IsFile then

..... // Файл существует

else

28

..... // Файл не существует

end;

В этом фрагменте с помощью блока try ... except... end реализуется защита программы от краха в случае, если делается попытка открыть несуществующий файл. В случае отсутствия файла при выполнении оператора Reset(F) нормальное выполнение программы прервется и управление будет передано в секцию except... end обработки исключения, в которой переменной IsFile будет присвоено значение False. Если файл существует, исключение не возникнет и переменная IsFile получит значение True.

В

36

Object Pascal разрешается обращаться к типизированным файлам, открытым процедурой Reset (т.е. для чтения информации), с помощью процедуры Write (т.е. для записи информации). Такая возможность позволяет обновлять ранее созданные типизированные файлы и при необходимости расширять их. Для текстовых файлов, открытых процедурой Reset, нельзя использовать процедуру Write или WriteLn.

Стандартная процедура

Rewrite (<ф.п.>);

инициирует запись информации в файл, связанный с файловой переменной <ф.п.>. Процедурой Rewrite нельзя инициировать запись информации в ранее существовавший дисковый файл: при выполнении этой процедуры старый файл (если он был) уничтожается и никаких сообщений об этом в программу не передается. Новый файл подготавливается к приему информации и его указатель принимает значение 0.

Стандартная процедура

Append (<ф.п.>)

инициирует запись в ранее существовавший текстовый файл для его расширения, при этом указатель файла устанавливается в его конец. Процедура Append применима только к текстовым файлам, т.е. их файловая переменная должна иметь тип TextFile. Процедурой Append нельзя инициировать запись в типизированный или нетипизйрованный файл. Если текстовый файл ранее уже был открыт с помощью Reset или Rewrite, использование процедуры Append приведет к закрытию этого файла и открытию его вновь, но уже для добавления записей.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]