Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка DELPHI.DOC
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.73 Mб
Скачать

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

Файловая переменная для этого типа объявляется следующим образом: Var F : file of <тип элементов>;.

Тип элементов может быть любым, за исключением файлового типа и указательного. Например, Var F : file of Double;.

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

AssignFile(F, ‘c:\a.dat’);

Reset(F); {или Rewrite(F)}

. . . . . .

CloseFile(F);

Процедура Rewrite, как и в случае текстовых файлов, открывает новый типизированный файл для записи информации. Однако процедура Reset работает не так, как с текстовыми файлами, - она устанавливает доступ и на чтение и на запись информации. Чтение и запись осуществляется следующими процедурами:

Read(<ф.п.>, <список>);

Write(<ф.п.>, <список>);

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

Seek(<ф.п.>, <номер записи>); {отсчет от 0}

Найденную запись можно прочитать или снова перезаписать. В отличие от текстовых файлов, при записи информации в типизированный файл нельзя использовать в процедуре Write выражения.

Файлы без типа

В данном случае файловая переменная указывается так:

Var F : file;

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

Reset(<ф.п.>, Size);

Rewrite(<ф.п.>, Size);

Добавляется дополнительный параметр - Size – размер элементов в файле. Величину Size можно устанавливать равной 1. Можно не указывать Size, тогда система по умолчанию примет величину 128. Чтение и запись производятся процедурами:

BlockRead(<ф.п.>, Buffer, N, Result);

BlockWrite(<ф.п.>, Buffer, N, Result);

Здесь Buffer обычно задаётся описанием Arrayof Char или Arrayof Byte; N – количество элементов, которое требуется прочитать или записать; Result – конкретное количество элементов, которое прочиталось или записалось.

Если пользователь знает, какая информация записана в файле, то можно задавать конкретный размер записи. Например, если необходимо работать со структурами данных, то используя функцию SizeOf, можно определить размер записи, кратный полученному с помощью SizeOf числу. Использование процедур BlockRead и BlockWrite в этом случае значительно ускорят работу с файлами.

Дополнительные процедуры и функции

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

Append(<ф.п.>);

Эта процедура устанавливает указатель в конец файла.

Очень полезной является функция Eof(<ф.п.>) (End of file). Она возвращает true, если достигнут конец файла. С помощью этой функции можно контролировать навигацию по файлу:

While not Eof(F) do begin

Read(F, a); . . . .

end;

Процедура Read (как и процедура Write) сдвигает файловый указатель на единицу, таким образом, с помощью приведенного выше цикла можно прочитать файл до конца.