«Программирование с использованием записей и файлов» Delphi. Delphi. Тема Тема 9:9:9:9:
«Программирование с использованием записей и файлов» План темы: Т Т Т Т ии пп д д д д аапа инн инн ыыыы хох « « « « ЗЗЗЗ аапа пп ии сс ьььь »»»» Т Т Т Т ии пп д д д д аапа инн инн ыыыы хох « « « « ФФФФ аапа йййй лол »»»» П П П П р-р-р ооо цыц ее ддт уууу р-р-р ыыыы и и и и ф ф ф ф уууу инн как цыц ии ии д д д д лол яя р р р р аапа боб ооо тттт ыыыы с с с с ффс аапа йййй лол аапа мм ии К К К К ооо мм пп ооо инн ее инн тттт ыыыы O O O O pppp eeee nnnn DDDD iiii aaaa llll oooo gggg и и и и S S S S aaaa vvvv eeee DDDD iiii aaaa llll oooo gggg П П П П р-р-р ии мм ее р-р-р ыыыы п п п п р-р-р ооо гг р-р-р аапа мм мм ии р-р-р ооо вв аапа инн ии яя с с с с ии сс пп ооо лол ьььь заз ооо вв аапа инн ии ее мм з з з з аапа пп ии сс ее йййй и и и и ф ф ф ф аапа йййй лол ооо вв....
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 := ; 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 и др.). Чаще всего такими компонентами являются «записи». Файл с записями называют также базой данных. Такие файлы удобны для хранения и обработки больших объемов данных.
Компонентами нетипизированного файла являются блоки данных фиксированной длины. Размер блока обычно 128 байт или 512 байт. Такие файлы применяются для увеличения скорости чтения/записи информации из файла, копирования, печати, передачи данных по сети и др.
Компонентами текстового файла являются строки. Длина строки символов. Каждая строка завершается символами окончания строки с кодами 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.
Диалоговые окна для выбора открываемого или сохраняемого файла организуются в Delphi с помощью компонентов OpenDialog и SaveDialog. 3. Компоненты OpenDialog и SaveDiaog.
Основные свойства этих компонентов: DefaultExt - Расширение, которое добавляется к имени файла, если пользователь его пропустил. FileName - Начальное имя файла. Filter - Фильтр имени файла. Filterlndex - Номер активного фильтра. InitialDir - Начальный каталог, открываемый при первом появлении окна диалога. Options - Параметры, определяющие внешний вид и поведение окна диалога. Title - Заголовок окна диалога. 3. Компоненты OpenDialog и
Метод Execute у обоих компонентов выполняет диалог открытия или сохранения файла и возвращает значение True, если пользователь выбрал файл. Полный маршрут к файлу запоминается в значении свойства FileName. Пример: If OpenDialog1. Execute then begin AssignFile(f, OpenDialog1.FileName); Reset(f); end; 3. Компоненты OpenDialog и
Внешний вид окна диалога открытия файла: 3. Компоненты OpenDialog и