В отличие от текстовых файлов, типизированные файлы имеют более строгую внутреннюю структуру. При записи в них записывается машинное представление очередного компонента. Внутри компоненты файла ничем не отделяются друг от друга. Но найти любой компонент несложно – ведь каждый занимает в файле одинаковый объем равный размеру его типа.
Var f: file of string [60];
Не похож на текстовый файл из строк, в нем не будет символов конца строки, а будет сплошная последовательность символов кратная 61 (60 символов в строке плюс 1 байт длины строки). Если реальные значения строк короче 60 символов, все равно на запись отведется 61 символ (излишки будут забиты мусором).
Преимущества типизированных файлов:
· эффективным образом хранят числовую информацию;
· позволяет считывать и записывать сложные структуры одной командой.
Type
Dim_ =array [1..100, 1..20] of real;
Var
Xx,yy:dim_;
Fin, fout: file of dim_;
---------------------------
Begin
{ связывание и открытие файлов }
Read (fin, xx); { считывается весь массив }
------------------------- { обработка массива }
|
|
Write (fout, yy); { запись всего массива }
End.
Недостатки типизированных файлов:
· неоптимальны для хранения строк;
· имеют сложное внутреннее представление (просмотр невозможен).
Размер буфера для типизированных файлов устанавливается автоматически, исходя из размеров компонентов. Пользователю не предоставляется возможность изменить его размер.
Указатели и динамическая память
Динамическая память
Память под глобальные переменные и типизированные const выделяется статически, т.е. на стадии компиляции и находится в непрерывной области ОП, называемой сегментом данных. Длина сегмента 64 кб.
Выделенную память под переменные нельзя использовать для других целей до конца работы блока, даже если переменные уже не нужны. Ограничения в 64 кб вызывает затруднения при работе с большими массивами данных.
Динамическая память предоставляется программе при ее работе (т.е. во время выполнения) за исключением:
¨ сегмента данных (64 кб),
¨ стека (16 кб),
¨ собственно тела программы.
Необходимость в куче возникает в следующих случаях:
1.Используются переменные, имеющие довольно большой размер или превышающие 64 кб.
2.Когда необходимо динамическое изменение числа элементов в структурах, либо число элементов непредсказуемо (динамические списковые структуры данных).
3.Широко используется для временного запоминания данных при работе с графикой и объектами.