- •Лабораторная работа № 6
- •Лабораторная работа 7
- •1. Домашнее задание
- •Лабоаторная работа №8
- •Лабораторная работа № 9 Работа с массивами в среде программирования «Delphi»
- •1. Теоретическая часть Реакция на события от мыши и клавиатуры
- •Интерфейс Drag&Drop
- •2. Лабораторные задания и методические указания по их выполнению
- •Лабораторная работа № 10
- •1. Теоретическая часть
- •Доступ к файлам
- •Подпрограммы для работы с файлами
- •Текстовые файлы
- •Подпрограммы для работы с текстовыми файлами
- •Подпрограммы для работы с типизированными файлами
- •TOpenDialog и tSaveDialog
- •2. Лабораторные задания и методические указания по их выполнению
- •394026 Воронеж, Московский просп., 14
Лабораторная работа № 10
Разработка программного интерфейса и работа с файлами.
Цель: научиться использовать компоненты TOpenDialog, TsaveDialog, TBitBtn, TGroupBox, TRadioButton, TCheckBox, TEdit. Отработать приемы работы с файлами.
1. Теоретическая часть
Под файлом понимается именованная область внешней памяти ПК (жесткого диска, дискеты, диска CD-ROM).
Любой файл имеет три характерные особенности. Во-первых, у него есть имя, что дает возможность программе работать одновременно с несколькими файлами. Во-вторых, он содержит компоненты одного типа. Типом компонентов может быть любой тип Object Pascal, кроме файлов. Иными словами, нельзя создать "файл файлов". В-третьих, длина вновь создаваемого файла никак не оговаривается при его объявлении и ограничивается только емкостью устройств внешней памяти.
Файловый тип или переменную файлового типа можно задать одним из трех способов:
<имя> = File of <тип>;
27
<имя> = TextFile;
<
34
Здесь <имя> - имя файлового типа (правильный идентификатор); 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
Стандартная процедура
Rewrite (<ф.п.>);
инициирует запись информации в файл, связанный с файловой переменной <ф.п.>. Процедурой Rewrite нельзя инициировать запись информации в ранее существовавший дисковый файл: при выполнении этой процедуры старый файл (если он был) уничтожается и никаких сообщений об этом в программу не передается. Новый файл подготавливается к приему информации и его указатель принимает значение 0.
Стандартная процедура
Append (<ф.п.>)
инициирует запись в ранее существовавший текстовый файл для его расширения, при этом указатель файла устанавливается в его конец. Процедура Append применима только к текстовым файлам, т.е. их файловая переменная должна иметь тип TextFile. Процедурой Append нельзя инициировать запись в типизированный или нетипизйрованный файл. Если текстовый файл ранее уже был открыт с помощью Reset или Rewrite, использование процедуры Append приведет к закрытию этого файла и открытию его вновь, но уже для добавления записей.