![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Прямой доступ к нетекстовым файлам ТР
Прямой доступ позволяет обращаться к записям файла по номерам. Нумерация записей начинается с нуля. Следующие подпрограммы позволяют организовывать прямой доступ к записям типизованных и нетипизованных файлов. Всюду ниже f - файловая переменная. 1. Функция FilePos(var f): longint возвращает номер позиции указателя файла. После открытия файла эта функция возвращает 0. 2. Функция FileSize(var f): longint возвращает количество записей файла. 3. Процедура Seek(var f; n: longint) перемещает указатель файла f в позицию с номером n. Обращение Seek(f; FileSize(f)) установит указатель в конец файла. 4. Процедура Truncate(f) усекает файл по текущей позиции указателя. Для удаления последней записи файла выполним последовательность операторов Seek(f; FileSize(f) -1); Truncate(f).
В ТР существует предопределенная переменная FileMode, которая определяет режим для открываемых файлов. По умолчанию FileMode=2, что соответствует режиму чтения и записи, FileMode=1 - только запись, FileMode=0 - только чтение. Процедуры Reset и Rewrite открывают существующие файлы в соответствии с установленными режимом. Вновь создаваемый файл процедурой Rewrite открывается в режиме чтения и записи независимо от значения переменной FileMode. Пример 4. Программа удаления четных чисел из файла целых чисел. Вспомогательный файл не используется. Порядок следования чисел не меняется. Program del_even; Var f: file of integer; i, j: longint; {i - указатель для чтения, j - указатель для записи} n: integer; f_name: string[40]; Begin write('Введите имя файла '); readln(f_name); Assign(f, f_name); Reset(f); i: =0; j: =0; while not Eof(f) do begin read(f, n); i: =i+1; if odd(n) then begin Seek(f, j); j: =j+1; write(f, n) {Записываем нечетное.} end; Seek(f, i) end; Seek(f, j); Truncate(f); Close(f) end. 26. ДИНАМИЧЕСКИЕ ПЕРЕМЕННЫЕ
Переменные, структура и тип которых определяются в разделе описаний блока (программы или подпрограммы), существуют и не изменяют своей структуры в течение всего времени работы блока. Такие переменные и связанные с ними структуры называются статическими. Использование статических переменных и структур удобно не всегда. Иногда требуется, чтобы переменные возникали уже при выполнении программы или меняли свои размеры и структуру. Такие переменные и структуры называются динамическими.
|