Запис компоненти у файл прямим методом доступу
Читання компоненти файлу прямим методом доступу
Встановлення покажчика файлу для прямого доступу до компоненти
При прямому методу доступу до компонент файлу використовують стандартний предикат filepos.
Стандартний предикат filepos дозволяє встановити покажчик в певне місце файлу, щоб читати дані з цього місця або писати дані в це місце.
filepos (Символічне ім'я файлу, Покажчик, Точка відліку)
Режими роботи предикату:
( i, i, i) – встановити покажчик
(i, o, i) – одержати поточний покажчик
(symbol, long, integer)
Точка відліку може приймати значення:
0 – точка відліку покажчика початок файлу
1 – точка відліку покажчика поточний покажчик
2 – точка відліку покажчика кінець файлу.
Для режиму 2 покажчик, який не дорівнює 0 вказує на байт поза файлом. Рахунок байтів зліва на право.
Розглянемо на прикладі програми, які дії виконують при читанні компоненти файлу прямим методом доступу.
Завдання: Прочитати 31 символ файлу прямим методом доступу і вивести його на екран.
Do: - openmodify(f, “F.dat”), readdevice(f),filepos (f, 30, 0), readchar (C),
write(C), closefile(f).
Процедура виконує дії:
Ø відкриває файл для прямого методу доступу;
Ø призначає вхідний потік на файл;
Ø встановлює покажчик у необхідні позицію;
Ø читає символ;
Ø виводить символ не екран;
Ø закриває файл.
Покажчик встановлюється на 31 байт файлу(рахунок ведеться з нуля).
Розглянемо на прикладі програми, які дії виконують при запису компоненти у файл прямим методом доступу.
Завдання. Записати у 21 байт файлу прямим методом доступу символ ‘Y’. Файл не існує.
Do:- openwrite(f, “F.dat”), closefile(f), openmodify(f, “F.dat”), writedevice(f),filepos (f, 20, 0), write(‘Y’),closefile(f).
Процедура виконує дії:
Ø Процедура утворює порожній файл:
o Відкриває файл для запису послідовним методом доступу;
o Закриває файл.
Ø Відкриває файл для прямого доступу;
Ø призначає вихідний потік на файл;
Ø Утворює 20 байтів з пропусками і встановлює покажчик після 20 байту для запису;
Ø Записує символ в файл;
Ø Закриває файл.
На файл відкритий для прямого методу доступу можна призначати вхідний і вихідний потоки для читання і запису одночасно.
Завдання. Визначити довжину файлу в байтах.
do:-openmodify(f,“f.dat”),readdevice(f),
filpos(f,0,2),filpos(f,D,0),write(D),closefile(f).
Процедура виконує дії:
Ø Відкриває файл для прямого доступу;
Ø Призначає вхідний потік для читання;
Ø Перший предикат filepos встановлює покажчик на останній байт файлу включаючи керуючі символи;
Ø Другий предикат filpos визначає на якій відстані в байтах стоїть перший символ файлу відносно початку, тобто довжину файла в байтах;
Ø Виводить довжину на екран;
Ø Закриває файл.