09 rec file

26
« Програмування із застосуванням записів та файлів » Delphi .

Upload: pogromskaya

Post on 18-Jul-2015

30 views

Category:

Education


0 download

TRANSCRIPT

«Програмування із застосуванням записів та

файлів»

Delphi.

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

План темы:

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.

•Внешний вид окна диалога открытия файла:

3. Компоненты OpenDialog и SaveDiaog.