Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



ПОСЛЕ ЗАКРЫТИЯ ФАЙЛ МОЖНО:

Ø ERASE(<ФП>)

– удалить файл.

Ø RENAME(<ФП>,<НОВОЕ ИМЯ>)

– переименовать файл.

ПОЛЕЗНЫЕ ПОДПРОГРАММЫ ДЛЯ ОБРАБОТКИ ФАЙЛОВ

Ø IORESULT

– функция типа WORD; возвращает условный признак последней операции ввода-вывода, если успешно, то 0.

Ø EOF(<ФП>)

– функция типа BOOLEAN; возвращает true, если указатель файла находится в его конце, иначе – false.

Ø FLUSH(<ФП>)

– очищает буфер, связанный с файлом, гарантируя сохранность всех последних изменений

ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С КАТАЛОГАМИ

Ø CHDIR(<ПУТЬ>)

– сменить текущий каталог

Ø MKDIR(<ПУТЬ>)

– создать новый каталог

Ø RMDIR(<ПУТЬ>)

– удалить пустой каталог

Ø GETDIR(<УСТРОЙСТВО>,<ПУТЬ>)

– получить имя текущего каталога и номер устройства, на котором он находится

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

ПОЛЕЗНЫЕ ФУНКЦИИ ДЛЯ ОРГАНИЗАЦИИ ПРЯМОГО ДОСТУПА К КОМПОНЕНТАМ ТИПИЗИРОВАННОГО ФАЙЛА

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

Ø SEEK (<ФП>,<N>)

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

Ø FILEPOS(<ФП>)

– функция типа longint; возвращает номер следующего считываемого компонента (т.е. того, на котором сейчас находится указатель файла).

Ø FILESIZE(<ФП>)

– функция типа longint; возвращает количество записей в файле.

Ø TRUNCATE(<ФП>)

– процедура «усекает» длину файла до текущей записи (положения указателя).

ПРОЦЕДУРА СОЗДАНИЯ ФАЙЛА ИЗ ЦЕЛЫХ ЧИСЕЛ

PROCEDURE CREATE(NAME:STRING); VAR F:FILE OF INTEGER; {файловая переменная} X:INTEGER; BEGIN ASSIGN (F,NAME); {файловая переменная связана с файлом с именем NAME} {$I-} REWRITE(F); {открыть файл на запись (перезапись)} {$I+} IF IORESULT=0 THEN {если файл открыт} BEGIN WRITELN('VVEDITE CHISLA (OSTANOVKA 0):'); READ(X); WHILE X<>0 DO {вводим числа в цикле до нулевого значения и записываем их в файл} BEGIN WRITE (F,X); READ(X); END; CLOSE(F); {закрыть файл} END; END;

ПРОЦЕДУРА РАСПЕЧАТКИ СОДЕРЖИМОГО ФАЙЛА ИЗ ЦЕЛЫХ ЧИСЕЛ

PROCEDURE PRINT(NAME:STRING); VAR F:FILE OF INTEGER; {файловая переменная} X:INTEGER; BEGIN ASSIGN (F,NAME); {файловая переменная связана с файлом с именем NAME} {$I-} RESET(F); {открыть файл на чтение} {$I+} IF IORESULT=0 THEN {если файл открыт} BEGIN WHILE NOT (EOF(F)) DO {пока не достигнут конец файла } BEGIN {читаем элемент из файла и выводим ее на консоль} READ(F,X); WRITE(X:6); END; WRITELN; CLOSE(F); {закрыть файл} END; END;

ПРОЦЕДУРА УДАЛЕНИЯ ИЗ ФАЙЛА ВСЕХ ОТРИЦАТЕЛЬНЫХ ЧИСЕЛ

PROCEDURE SGAT(NAME:STRING); VAR F:FILE OF INTEGER; {файловая переменная} X,K,S:INTEGER; BEGIN S:=0; {обнуляем счетчик отрицательных чисел} ASSIGN (F,NAME); {файловая переменная связана с файлом с именем NAME } {$I-} RESET(F); {открыть файл на чтение/запись} {$I+} IF IORESULT=0 THEN {если файл открыт} BEGIN WHILE NOT (EOF(F)) DO {пока не достигнут конец файла} BEGIN READ(F,X); {читаем целое число из файла} IF X=0 THEN {если прочитанный элемент – отрицательный считаем его} S:=S+1 ELSE BEGIN K:= FILEPOS (F); {иначе запоминаем в k позицию, следующую за прочитанным положительным элементом} SEEK(F,K-1-S); {смещаем указатель на позицию за последней положительной записью} WRITE (F,X); {записываем считанный элемент} SEEK (F,K); { и переходим к еще непрочитанной позиции} END; END; SEEK (F, FILEPOS (F)-S); {смещаем указатель на длину файла — количество удаленных элементов} TRUNCATE (F); { и «обрезаем» лишнее} CLOSE(F); {закрываем файл, чтобы сохранить изменения в файле} END; END;

ПРИМЕР ПРОГРАММЫ, ИСПОЛЬЗУЮЩЕЙ ПРИВЕДЕННЫЕ ВЫШЕ ПОДПРОГРАММЫ





Дата публикования: 2015-02-22; Прочитано: 231 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...