Процедуры и функции для работы с файлами.

Assign(f, FileName); -связывает файловую переменную f с физическим файлом, полное имя которого задано в строке FileName.

Reset(f); - открывает для чтения файл

Rewrite(f) - открывает для записи файл

Close(f) - закрывает открытый до этого файл

EOF(f): Boolean; - возвращает значение TRUE, когда при чтении достигнут конец файла.

Rename(f, NewName); - позволяет переименовать физический файл на диске

Erase(f); - уничтожает физический файл

Write(f, список переменных); - Процедура записывает в файл f всю информацию из списка переменных.

Read(f, список переменных);- Процедура читает из файла f компоненты в указанные переменные.

Seek(f, n); - Процедура смещает указатель файла f на n-ную позицию.

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

Reset(f, BufSize);

Rewrite(f, BufSize);

Параметр BufSize задает число байтов, считываемых из файла или записываемых в него за одно обращение. Минимальное значение BufSize - 1 байт, максимальное - 64 К байт. Если BufSize не указан, то по умолчанию он принимается равным 128.

BlockRead(f, X, Count); - Эта процедура осуществляет за одно обращение запись из переменной X количества блоков, заданное параметром Count, при этом длина блока равна длине буфера.

Динамическая память.

В предшествующих разделах использовались переменные, память под которые выделялась статически, то есть на стадии компиляции. Эти области памяти (для переменных из раздела VAR данного блока) существуют до конца работы блока, даже если эти переменные уже не нужны. При этом память нередко используется неэффективно, достаточно вспомнить «настройку» массива на фактическое количество элементов, а также, если, например, объявлено несколько массивов большого объема статической памяти, а в каждый конкретный момент используются не все.

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

Можно отметить следующие достоинства динамической памяти:

- экономичность и эффективность ее использования;

- возможность динамического изменения числа элементов в связанных структурах, например, списках (в статической памяти число элементов фиксировано для каждой компиляции);

- статические переменные существуют только в течение жизни блока, в котором они объявлены, а динамические - и после выхода из блока до окончания программы. Переменная, размещаемая динамически, не объявляется в разделе VAR и не имеет имени в программе («невидимка»). Компилятор не планирует выделение места в памяти под такие переменные.

Указатель.

Обращение к участку динамической памяти в программе осуществляется с помощью специальной ссылочной переменной, которая называется указателем (ссылкой). Переменная типа «указатель» содержит адрес размещения участка динамической памяти, с которой связан этот указатель. Компилятор отводит под переменную типа «указатель» четыре байта статической памяти. Обычно указатель, связанный с определенным типом данных, называется типизированным. Однако он может быть и не типизированным, то есть совместимым с указателями любого типа данных. В этом случае указатель называется свободным (несвязанным).Формат описания типа «указатель» следующий:

TYPE <идентификатор указателя>=^<тип>;

формате объявления типа «указатель» должен быть указан идентификатор типа, поэтому стандартные идентификаторы (INTEGER, REAL и т.д.) можно указывать непосредственно в описаниях типа «указатель». НЕЛЬЗЯ объявлять «указателем» массивы, записи и строки(строчные типы).Вот блядь такое вот дела!

Переменная типа «указатель» занимает в памяти двойное слово. Указатель может находиться в одном из трех состояний, а именно:

1) еще не инициализирован;

2) содержит адрес размещения;

3) содержит значение предопределенной константы NIL; такой указатель называется пустым, то есть не указывает ни на какую переменную. Указатель со значением NIL содержит 0 в каждом из четырех байтов.

Указатели можно сравнивать с другими указателями ( =, <> ), присваивать им адрес или значение другого указателя, передавать как параметр. Указатель нельзя отпечатать или вывести на экран.

ПРИМЕРЫ описания:р: pointer;

р3: ^real;

Наши рекомендации