Record,File Козлов Вячеслав 4О-110Б.pptx
- Количество слайдов: 12
Record и File Выполнил: Студент группы 4 О-110 Б Козлов Вячеслав Источник: В. В. Фаронов Delphi 6 Учебный курс Издатель Молгачёва С. В. Москва 2001
Record(Запись) Запись-это структура данных, состоящая фиксированного количества компонентов , называемых полями записи. В отличие от массива компоненты(поля) записи могут быть различного типа. Чтобы было можно ссылаться на тот или иной компонент записи, поля именуются. Структура объявления типа записи такова: <имя типа> = record < сп. полей > end; Здесь <имя типа> - правильный идентификатор ; record , end –зарезервированные слова(запись, конец); < сп. полей > - список полей; представляет собой последовательность разделов записи; между которыми ставится точка с запятой.
Каждый раздел записи состоит из одного или нескольких идентификаторов полей, отделяемых друг от друга запятыми. За идентификатором (идентификаторами) ставится двоеточие и описание типа поля (полей), например: type Birth. Day = record Day, Month: Byte; Year : Word end; var b : Birthday; В этом примере тип Birth. Day (день рождения) есть запись с полями Day, Month и Year (день, месяц и год)-, переменные A и B содержат записи типа Birth. Day. Как и в массиве, значения переменных типа записи можно присваивать другим переменным того же типа, например а : = Ь; К каждому из компонентов записи можно получить доступ, если использовать составное имя, т. е. указать имя переменной, затем точку и имя поля: day : = 27; year : = 1939;
Для вложенных полей приходиться продолжать уточнения: type Birth. Day = record Day, Month: Byte; Year : Word end; var с : record Name : String; Bd : Birth. Day end; begin ………. . if c. Bd. Year = 1989 then. . . end.
Чтобы упростить доступ к полям записи, используется оператор присоединения with: with <переменная> do <оператор>; Здесь with, do - зарезервированные слова (с, делать)', <переменная> - имя переменной типа запись, за которой, возможно, следует список вложенных полей; <оператор> - любой оператор Object Pascal. Например: с. Bd. Month : = 9; Это эквивалентно with c. Bd do Month : = 9; ИЛИ with с do with Bd do Month : = 9; ИЛИ with c, Bd do Month : = 9;
File(файл) Под файлом понимается именованная область внешней памяти ПК (жесткого диска, гибкой дискеты, диска CD-ROM). Любой файл имеет три характерные особенности. Во-первых, у него есть имя, что дает возможность программе работать одновременно с несколькими файлами. Во-вторых, он содержит компоненты одного типа. Типом компонентов может быть любой тип Object Pascal, кроме файлов. Иными словами, нельзя создать «файлов» . В-третьих, длина вновь создаваемого файла никак не оговаривается при его объявлении и ограничивается только емкостью устройств внешней памяти.
Файловый тип можно задать одним из трех способов: <имя> = File of <тип>; <имя> = Text. File; <имя> = File; Здесь <имя> - имя файлового типа (правильный идентификатор); File, of зарезервированные слова (файл, из); Text. File - имя стандартного типа текстовых файлов; <тип> - любой тип Object Pascal, кроме файлов. Например: type Product = record Name: String; Code: Word; Cost: Comp end; Text 80 = File of String[80]; var FI: File of Char; F 2: Text. File; F 3: File; F 4: Text 80; F 5: File of Product;
В зависимости от способа объявления можно выделить три вида файлов: типизированные файлы (задаются предложением File of. . . ); текстовые файлы (определяются типом Text. File); нетипизированные файлы (определяются типом File). В наших примерах F 1, F 4 и F 5 - типизированные файлы, F 2 - текстовый файл, F 3 - нетипизированный файл.
ТЕКСТОВЫЕ ФАЙЛЫ Текстовые файлы связываются с файловыми переменными, принадлежащими к стандартному типу Text. Fiie. Текстовые файлы предназначены для хранения текстовой информации. Именно в такого типа файлах хранятся, например, исходные тексты программ. Компоненты (записи) текстового файла могут иметь переменную длину, что существенно влияет на характер работы с ними. Текстовый файл трактуется в Object Pascal как совокупность строк переменной длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой. При создании текстового файла в конце каждой строки ставится специальный признак EOLN (End Of Line - конец строки), а в конце всего файла - признак EOF (End Of File - конец файла).
ТИПИЗИРОВАННЫЕ ФАЙЛЫ Длина любого компонента типизированного файла строго постоянна, что дает возможность организовать прямой доступ к каждому из них (т. е. доступ к компоненту по его порядковому номеру). Перед первым обращением к процедурам ввода-вывода указатель файла стоит в его начале и указывает на первый компонент с номером 0. После каждого чтения или записи указатель сдвигается к следующему компоненту файла. Переменные в списках ввода-вывода должны иметь тот же тип, что и компоненты файла. Если этих переменных в списке несколько, указатель будет смещаться после каждой операции обмена данными между переменными и дисковым файлом.
НЕТИПИЗИРОВАННЫЕ ФАЙЛЫ Нетипизированные файлы объявляются как файловые переменные типа File и отличаются тем, что для них не указан тип компонентов. Отсутствие типа делает эти файлы, с одной стороны, совместимыми с любыми другими файлами, а с другой - позволяет организовать высокоскоростной обмен данными между диском и памятью. При инициации нетипизированного файла процедурами Reset или Rewrite можно указать длину записи нетипизированного файла в байтах. Например, так: var F: File; begin ……… Assign. File(F, ‘ myfile. dat ‘ ); Reset(f, 512); ………. end.
Длина записи нетипизированного файла указывается вторым параметром при обращении к процедурам Reset или Rewrite, в качестве которого может использоваться выражение типа Longlnt. Если длина записи не указана, она принимается равной 128 байтам. Object Pascal не накладывает каких-либо ограничений на длину записи нетипизированного файла за исключением требования положительности и ограничения максимальной длины 2 Гбайт. Для обеспечения максимальной скорости обмена данными рекомендуется задавать длину, которая была бы кратна длине физического сектора дискового носителя информации (512 байт). Однако операции обмена данными с дисковыми устройствами в среде Windows кэшируются, т. е. осуществляются через промежуточный буфер памяти, поэтому обычно задают Rec. Size = 1, что позволяет обмениваться с файлом блоками любой длины начиная с одного байта.


