Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Прямой доступ к нетекстовым файлам ТР






 

Прямой доступ позволяет обращаться к записям файла по номерам. Нумерация записей начинается с нуля.

Следующие подпрограммы позволяют организовывать прямой доступ к записям типизованных и нетипизованных файлов. Всюду ниже 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. ДИНАМИЧЕСКИЕ ПЕРЕМЕННЫЕ

 

Переменные, структура и тип которых определяются в разделе описаний блока (программы или подпрограммы), существуют и не изменяют своей структуры в течение всего времени работы блока. Такие переменные и связанные с ними структуры называются статическими.

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

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

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.