"Программирование с использованием записей и файлов".

Download Report

Transcript "Программирование с использованием записей и файлов".

Delphi. Тема 9:
«Программирование с
использованием записей и
файлов»
«Программирование с использованием
записей и файлов»
План темы:
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. Тип данных «ФАЙЛ»
На практике программам часто приходится
обрабатывать большие объемы данных.
Вводить их каждый раз с клавиатуры не
выгодно, поэтому данные размещаются в
файлах на диске и при необходимости
читаются программой.
• Файл - это структурированный тип
данных состоящий из последовательности
компонентов одного типа.
Файлы
Типизированные
Нетипизированные
Текстовые
2. Тип данных «ФАЙЛ»
• Компонентами типизированного файла
•
•
являются величины одного из базового
типа (Integer, Real и др.).
Чаще всего такими компонентами
являются «записи». Файл с записями
называют также базой данных.
Такие файлы удобны для хранения и
обработки больших объемов данных.
2. Тип данных «ФАЙЛ»
• Компонентами нетипизированного файла
являются блоки данных фиксированной
длины.
• Размер блока обычно 128 байт или 512
байт.
• Такие файлы применяются для
увеличения скорости чтения/записи
информации из файла, копирования,
печати, передачи данных по сети и др.
2. Тип данных «ФАЙЛ»
• Компонентами текстового файла
•
•
•
являются строки.
Длина строки 0..255 символов.
Каждая строка завершается символами
окончания строки с кодами 13, 10.
Такие файлы удобны тем, что их
информация может быть прочитана
любой программой, предназначенной для
просмотра и редактирования текстовой
информации.
• Для связи с файлом в программе
объявляется файловая переменная. В
зависимости от файлового типа описание
будет следующим:
• для типизированных файлов:
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.
3. Компоненты OpenDialog и SaveDiaog.
•Диалоговые окна для выбора открываемого или
сохраняемого файла организуются в 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.
•Внешний вид окна диалога открытия файла: