09 rec file
TRANSCRIPT
«Программирование с использованием записей и файлов»
План темы:
1. Тип данных «Запись».
2. Тип данных «Файл».
3. Процедуры и функции для работы с файлами.
4. Компоненты OpenDialog и SaveDialog.
5. Примеры программирования с использованием записей и файлов.
1. Тип данных «ЗАПИСЬ».•Запись – это структурированный тип данных, состоящий из фиксированного числа компонентов одного или нескольких типов.
•Определение типа записи начинается идентификатором RECORD и заканчивается зарезервированным словом END.
•Между ними заключен список компонентов, называемых полями, с указанием идентификаторов полей и типа каждого поля.
ПРИМЕР ОПИСАНИЯ ЗАПИСИ:
TYPE Car = RECORD Number : integer;Marka : string[20];Probeg : integer;Rashod : real;END; VAR M,V : Car;
ОБРАЩЕНИЕ К ПОЛЯМ ЗАПИСИ:
•Обращение к значению поля осуществляется с помощью идентификатора переменной и идентификатора поля, разделенных точкой. Такая комбинация называется составным именем. Например, чтобы получить доступ к полям записи Car, надо записать: M.Number, M.Marka, M.Probeg, M.Rashod
ОБРАЩЕНИЕ К ПОЛЯМ ЗАПИСИ:
•Для присваивания полям значений можно использовать оператор присваивания: M.Number:=1678; M.Marka:='ГАЗ-24';M.Probeg:=212100;
ОБРАЩЕНИЕ К ПОЛЯМ ЗАПИСИ:• Один раз указав переменную типа запись в операторе WITH, можно работать с именами полей как с обычными переменными, т.е. без указания перед идентификатором поля имени переменной, определяющей запись.WITH <переменная типа запись> DO <оператор>;
• Пример: Присвоить значения полям записи Car с использованием оператора WITH.
WITH M DO BEGIN Number := 5543; Marka := 'ГАЗ-21'; Probeg := 212100; Rashod := 8.5;
END;
МАССИВЫ ЗАПИСЕЙ•В ряде задач удобно использовать массивы из записей. Их можно описать следующим образом:
TYPE Person = RECORD FIO : string[20]; Age : byte; Prof: string[30]
END; VAR List : array[1..50] of Person;
•Обращение к полю FIO i-го элемента массива: List[i].FIO
ПРИМЕР ОБРАБОТКИ ЗАПИСЕЙ
• Из массива записей List (описание на предыдущей странице) вывести данные для тех, кто моложе 25-и лет.
BEGIN…For i := 1 to N do
If List[i].Age < 25 then begin{…Вывод FIO, Age, Prof}
end;END.
На практике программам часто приходится обрабатывать большие объемы данных. Вводить их каждый раз с клавиатуры не выгодно, поэтому данные размещаются в файлах на диске и при необходимости читаются программой.
•Файл - это структурированный тип
данных состоящий из последовательности компонентов одного типа.
2. Тип данных «ФАЙЛ»
• Компонентами типизированного файлаявляются величины одного из базового типа (Integer, Real и др.).
• Чаще всего такими компонентами являются «записи». Файл с записями называют также базой данных.
• Такие файлы удобны для хранения и обработки больших объемов данных.
2. Тип данных «ФАЙЛ»
• Компонентами нетипизированного файлаявляются блоки данных фиксированной длины.
• Размер блока обычно 128 байт или 512 байт.
• Такие файлы применяются для увеличения скорости чтения/записи информации из файла, копирования, печати, передачи данных по сети и др.
2. Тип данных «ФАЙЛ»
• Компонентами текстового файлаявляются строки.
• Длина строки 0..255 символов.
• Каждая строка завершается символами окончания строки с кодами 13, 10.
• Такие файлы удобны тем, что их информация может быть прочитана любой программой, предназначенной для просмотра и редактирования текстовой информации.
2. Тип данных «ФАЙЛ»
• Для связи с файлом в программе объявляется файловая переменная. В зависимости от файлового типа описание будет следующим:
• для типизированных файлов:
f1 : file of zap;
f2 : file of integer;
• для нетипизированных файлов:
f3 : file;
• для текстовых файлов:
f4 : TextFile;
• Для указания связи файловой переменной с конкретным файлом применяется процедура AssignFile(файловая переменная ,<имя файла>). Например:
AssignFile(f1, ’myfile.dat’);
• Одна переменная одновременно не может указывать на два файла, но одну переменную сначала можно связать с одним файлом, потом с другим.
Открытие файла:
• Rewrite (файловая переменная) - открыть файл для записи, если указанный файл не существует, то создается новый файл; если указанный файл существует, то его содержимое стирается.
• Reset (файловая переменная) - открыть существующий файл для записи и чтения; если указанный файл не существует, возникает ошибка.
• Append (файловая переменная) - открыть текстовый файл для добавления данных, если указанный файл не существует, возникает ошибка.
Чтение-запись из файла:• Read (<файловая переменная>, <список
переменных>) - чтение данных из файла и присвоение их значений указанным переменным.
• Write(<файловая переменная>, <список эл-тов вывода>) - запись данных в файл.
• Для файла вводится понятие «текущее положение указателя». При чтении или записи одного компонента файла указатель перемещается на единицу.
• Seek (файловая переменная, N) -
установить положение указателя файла на компонент с номером N(к текстовым файлам не применяется).
• Eof (файловая переменная) - возвращает значение истинно, если указатель находится в конце файла.
• FilePos (файловая переменная) -
возвращает текущий номер указателя.
• FileSize (файловая переменная) -возвращает количество всех компонентов в файле.
• Close (файловая переменная) -закрытие файла.
• Rename(файловая переменная, новое имя) - переименование закрытого файла.
• Erase (файловая переменная) -удаление закрытого файла.
• Вывести на экран содержимое текстового файла
doc1.txt.
VAR
F:TextFile;
S:String;
BEGIN
AssignFile(F,’doc1.txt’);
Reset(F);
While not Eof(F) do begin
Read(F,S);
{…Вывод строки S на экран.}
End;
Close(F);
END.
•Диалоговые окна для выбора открываемого или
сохраняемого файла организуются в Delphi с
помощью компонентов OpenDialog и SaveDialog.
3. Компоненты OpenDialog и SaveDiaog.
•Основные свойства этих компонентов:
DefaultExt - Расширение, которое добавляется к имени
файла, если пользователь его пропустил.
FileName - Начальное имя файла.
Filter - Фильтр имени файла.
Filterlndex - Номер активного фильтра.
InitialDir - Начальный каталог, открываемый при
первом появлении окна диалога.
Options - Параметры, определяющие внешний вид и
поведение окна диалога.
Title - Заголовок окна диалога.
3. Компоненты OpenDialog и SaveDiaog.
•Метод Execute у обоих компонентов выполняет
диалог открытия или сохранения файла и
возвращает значение True, если пользователь
выбрал файл. Полный маршрут к файлу
запоминается в значении свойства FileName.
Пример:
If OpenDialog1.Execute then begin
AssignFile(f, OpenDialog1.FileName);
Reset(f);
end;
3. Компоненты OpenDialog и SaveDiaog.