что такое типизированный файл

Что такое типизированный файл

Горбачев Л.И. Основы программирования в среде Turbo Pascal.

что такое типизированный файл. Смотреть фото что такое типизированный файл. Смотреть картинку что такое типизированный файл. Картинка про что такое типизированный файл. Фото что такое типизированный файл

2. Типизированные файлы.


2.1. Основные операции с внешними типизированными файлами.

В каждом случае предполагается, что файл F в программе уже связан с процедурой Assign с внешним файлом на диске.

2.1.1. Запись данных в файл.

Пример: Программа, с помощью которой происходит запись данных о студентах в новый типизированный файл (имя файла вводит пользователь).
[program DemoWrite]

2.1.2. Чтение данных из файла.

Общая структура фрагмента программы, составленной для чтения файла, имеет вид:

Тип переменных X1, X2. Xn должен соответствовать базовому типу элементов файла (это условие не обязательно для текстовых файлов). Процедура Reset осуществляет подготовку к чтению из файла F (открывает файл и устанавливает указатель на первый элемент файла).

После чтения очередного элемента указатель файла устанавливается на следующий за прочитанным элемент файла.

Процедура Close выполняет закрытие файла F.

Пример: Программа, с помощью которой происходит чтение данных из типизированного файла.
[program DemoRead]

2.1.3. Добавление данных в файл.


2.1.4. Изменение элементов файла.

Турбо Паскаль позволяет осуществлять прямой выбор элементов файла. Для этого используется процедура Seek:

Источник

Типизированные файлы в Паскаль.

Типизированный файл – это файл, в котором содержатся однотипные данные. Типизированный файл задается с помощью 2-х ключевых слов «file of». После слова «of» указывается тип файла, например integer, real, char, string и т.д. Тип файла может быть любым за исключением файлового типа (не может быть файла файлов) и комбинированного типа, один из компонентов которого имеет файловый тип.

В отличие от текстовых файлов, в типизированном файле информация хранится в двоичном представлении (в текстовом файле информация хранится в виде цепочки символов). Данный факт позволяет производить чтение и запись в файл более быстрым способом, т.к. отсутствует необходимость в преобразовании данных. Кроме того, в типизированном файле возможен прямой доступ к записям файла (в текстовом файле возможен только последовательный доступ).

Напишем программу, которая создаст своеобразную базу данных, хранящей сведения о студентах: их именах, номерах курса и групп.

Типизированные файлы в Паскаль.

Строка №3-№6. Объявляем в программе тип Record и указываем для него компоненты. Первый компонент «fio» (строка №4) будет описывать фамилию и инициалы студента. Компоненты «kurs» и «group» будут описывать соответственно номер курса и номер группы.

Строка №7. Объявляем переменную «zap» и указываем для нее тип «Student». Теперь с помощью переменной «zap» мы можем обратиться к любому компоненту записи.

Строка №8. Создаем файловую переменную «f» и указываем для нее тип «Student». Таким образом, мы создаем файл записей, где будет храниться информация о студентах.

В строке №9 создаем переменную «name», которая понадобится нам для создания имени файла.

Строка №13. Вводим с клавиатуры имя файла. Это имя будет записано в переменную «name».

Строка №14. Связываем файловую переменную «f» с именем файла. Как и в случае с текстовыми файлами связывание файловой переменной с файлом производится с помощью процедуры Assign

Строка №15. Открываем файл для записи. Открытие типизированного файла для записи производится аналогично текстовым файлам с помощью процедуры Rewrite. Так как самого файла не существует, он будет создан автоматически и будет иметь имя, которое мы задали в строке №13.

Строка №17. После вывода на экран сообщения (строка №16) мы вводим значение для 1-ого компонента записи (фамилию и инициалы студента).

Эти строки будут повторяться в цикле, пока на предложение ввести фамилию и инициалы студента мы просто нажмем пробел. После этого файл будет закрыт (строка №26) и на экран будет выведено сообщение (строка №27).

Источник

Типизированные файлы

Более характерным для Pascal являются типизированные файлы, или файлы произвольного доступа. Основным свойством этих файлов является то, что их структура данных представляет собой последовательность компонентов одного типа. Описывают подобный файл словосочетанием file of с последующим указанием типа компонентов файла, число которых (длина файла) не фиксируется:

var имя_файла : file of тип_компонентов

Поскольку известен тип элементов файла, а следовательно, и объем памяти, отводимой под каждый из них, можно рассчитать позицию каждого из элементов внутри файла. Это позволяет организовать непосредственный доступ к любому элементу типизированного файла. Так, например, рассмотрим описание:

Чтобы можно было работать с типизированным файлом, необходимо, как и для текстовых файлов, сначала связать имя файловой переменной с внешним именем файла (оператор Assign). Затем нужно открыть его (используются операторы Reset и Rewrite, но не Append). Операторы Reset и Rewrite открывают файл и для чтения, и для записи (а не только для чтения или только для записи, как при использовании текстовых файлов). Отличие их в том, что оператор Reset открывает только существующий файл (если такого файла нет, будет сгенерирована ошибка времени выполнения). С другой стороны, оператор Rewrite создает новый файл (если файл с таким именем уже имеется, то он будет уничтожен и создан заново). При открытии файла с ним связывается текущий указатель файла, который позиционируется на его первый элемент. Оперировать можно только тем элементом файла, на который ссылается указатель файла. При чтении или записи элемента файла происходит автоматическое перемещение указателя на следующий элемент. Чтение из типизированного файла производится оператором Read (но не ReadLn), а запись в него — оператором Write (но не WriteLn). Однако следует помнить, что в списке вывода оператора Write могут быть только переменные. Типы элементов файла и типы переменных в списках ввода-вывода должны быть согласуемы по присваиванию. Элементами типизированных файлов могут быть числовые, символьные, булевы, строковые значения, массивы, записи, но не файлы или структуры с файловыми элементами.

Например, если переменная k имеет тип LongInt, а f – файловая переменная типизированного файла, то оператор k := FileSize(f), записывает в переменную k размер файла f.

Элементы типизированного файла нумеруются с нуля (порядковый номер последнего элемента файла на единицу меньше размера файла). Чтобы узнать, на каком элементе располагается указатель файла, используют функцию FilePos:

Второй параметр (тип LongInt ) задает номер элемента (отсчет от 0), на который должен переместиться указатель файла. Рассмотрим несколько примеров.

Перейти к пятому (фактически шестому) элементу файла f :

Перейти к предыдущему элементу:

Перейти в конец файла:

Как и для текстовых файлов, можно использовать функцию Eof(имя_файла), которая возвращает значение True, если текущий указатель расположен на признаке конца файла (т. е. при выполнения равенства FilePos(имя_файла) = FileSize(имя_файла)).

Процедура Seek и функция FilePos и FileSize позволяют легко осуществлять коррекцию элементов типизированного файла, имя которого указано в качестве е параметра, начиная с элемента, на котором расположен указатель. Однако уничтожить элемент внутри файла нельзя, для этого файл должен быть перезаписан.

Текстовые файлы могут быть созданы текстовым редактором. Однако типизированные файлы создаются в результате работы какой-либо программы.

Пример записи данных в типизированный файл:

Пример последовательного доступа к типизированному файлу:

В приведенной программе типизированный файл обрабатывается и как файл последовательного доступа, и как файл произвольного доступа.

Источник

Что такое типизированный файл

Научится работать с различными видами файлов.

Файлы

Файлы бывают трех типов:

Чтобы открыть доступ к файлу, требуется создать файловую переменную одним из трех способов:

Между служебными словами try-finally вы вписываете потенциально опасный код. То есть, код, который может вызвать ошибку. А между finally-end указываете тот код, который должен быть выполнен в любом случае, даже при возникновении ошибки. Вот более правильный пример того, как нужно связывать файл с переменной:

Пример работы с файлом можно представить и так:

При этом указатель устанавливается в начало файла, в нулевую позицию.

Текстовые файлы

В результате, у вас должна получиться примерно такая форма:

что такое типизированный файл. Смотреть фото что такое типизированный файл. Смотреть картинку что такое типизированный файл. Картинка про что такое типизированный файл. Фото что такое типизированный файл

С подготовительной частью закончили, займемся программированием кнопок. Сгенерируйте событие OnClick для первой кнопки. Её код будет таким:

что такое типизированный файл. Смотреть фото что такое типизированный файл. Смотреть картинку что такое типизированный файл. Картинка про что такое типизированный файл. Фото что такое типизированный файл

Типизированные файлы

Такие файлы предназначены для обработки информации какого-то определенного типа. Это может быть и символ, и число. Если это строка, то её нужно объявлять с определенной длиной, например, так:

К типизированным файлам применимы следующие функции и процедуры:

Изучим работу с типизированными файлами на простом примере.

Откройте Lazarus с новым проектом. В Caption формы напишите » Типизированный файл » и сохраните проект в папку 23-02, не меняя имен формы, модуля и проекта.

что такое типизированный файл. Смотреть фото что такое типизированный файл. Смотреть картинку что такое типизированный файл. Картинка про что такое типизированный файл. Фото что такое типизированный файл

Код во многом вам знакомый, чтобы вы смогли с ним разобраться без надоедливых комментариев. Код второй кнопки:

Нетипизированные файлы

Кроме этих различий, нетипизированным файлам доступны все остальные процедуры и функции, что и типизированным. Изучим работу с нетипизированными файлами на примере, для этого создадим программу, которая выполняет копирование файла.

И напоследок, установите в нижней части формы простую кнопку TButton, в Caption которой напишите » Выполнить копирование «. Кнопка у нас одна, так что её можно не переименовывать.

Измените размеры формы и компонентов, чтобы у вас получилось примерно следующее:

что такое типизированный файл. Смотреть фото что такое типизированный файл. Смотреть картинку что такое типизированный файл. Картинка про что такое типизированный файл. Фото что такое типизированный файл

С подготовительной работой закончили, перейдем к кодированию. Весь код нам нужно будет делать в событии OnClick кнопки, сгенерируйте его. Вот этот код:

Если пользователь указал все данные, то дальше начинается работа с файлами. Мы ассоциируем файлы с файловыми переменными:

Далее, мы открыли оригинал для чтения, и создали копию, указав, что за раз будем обрабатывать по одному байту:

А дальше идет интересный код, который нам еще не встречался:

Далее мы выполняем чтение- запись :

Цикл Repeat…Until будет выполняться, пока количество считанных байт не станет равным нулю, что означает, что файл закончен, либо пока количество записанных и считанных байт не станет отличаться (произошла какая то ошибка чтения-записи). Внутри цикла мы сначала читаем данные:

Как видите, процедура чтения BlockRead имеет четыре параметра:

Процедура копирования BlockWrite также имеет четыре параметра:

5) Файловая переменная.
6) Буфер, откуда будут браться данные для записи.
7) Переменная с количеством данных, которые требуется записать. Процедура BlockRead записала в переменную NumRead количество реально считанных байт, это количество мы и будем писать.
8) Переменная с количеством реально записанных байт.

Источник

Типизированные и нетипизированные файлы в Паскале

Типизированные файлы

Файл, определенный стандартным или пользовательским типом данных, называется типизированным. Общая форма объявления типизированных файлов имеет вид:

Здесь тип компонент может быть любым типом данных, определенных в Pascal, но только не файловым. Для работы с типизированными файлами используются уже знакомые нам процедуры и функции: Write, Read, Seek, Filesize, Filepos, а также процедура Truncate:

Она удаляет все компоненты в файле, начиная с того над которым находиться указатель.

Одной из главных особенностей типизированного файла является возможность прямого обращения к его отдельным компонентам. Это достигается за счет, того что заранее известен тип компонент файла. Рассмотрим два примера кода, в первом из которых обращение к элементам файла происходит последовательно, а во втором прямо.

Пример 1.

Вычислить среднее арифметическое элементов файла.

Пример 2.

Поменять строки в файле местами.

Таким образом, напрашивается вывод, что типизированные файлы несколько функциональней в обработке, чем текстовые. Далее разберем последний пункт данной статьи, а именно третий вид файлов — бестиповые файлы.

Бестиповые (нетипизированные) файлы

Бестиповые файлы предназначены для записи участков памяти компьютера на внешний носитель и считывания их в память. В отличие от типизированных файлов, нам не нужно знать информация какого типа хранится в них. А все потому, что данные из файлов, не имеющих типа, считываются в виде байт, после чего они «подстраиваются» под переменную, в которую происходит считывание.

Общая форма записи нетипизированных файлов

Здесь «значение» — это новый размер буфера, который по умолчанию равен 128 байтам. В качестве минимального значения можно указать 1 байт, а максимального — 64 кбайт (число в байтах).

Также в бестиповых файлах для записи и чтения информации используются не стандартные процедуры Read и Write, а две новые: BlokRead и BlockWrite. Рассмотрим каждую из них.

Процедура BlockRead

Данная процедура считывает из файла заданное число записей, которые помещаются в память.

Общая форма записи:

x, y – обычные переменные, в первую помещается прочитанные данные, во вторую – количество считанных байт. В случае удачи y (y – необязательный параметр) будет иметь тоже значение, что и третий параметр.

Процедура BlockWrite

Для записи информации в бестиповый файл предназначена процедура BlockWrite:

Параметры процедуры BlockWrite точно такие же, как и у BlockRead. Да и принцип их одинаков, за исключением того, что первая записывает данные в файл, а вторая считывает их из него.

В следующей программе данные сначала записываются в нетипизированный файл, а затем выводятся из него посредством рассмотренных нами операций.

Возможно, что ваша среда программирования не поддерживает работу с файлами, не имеющими типа. Поэтому прежде чем начать искать ошибку в коде, стоит узнать про данную функцию.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *