ПАСКАЛЬ: РОБОТА З ФАЙЛАМИ
Зокрема, за допомогою процедур seek, filesize і write можна розширити файл, дописуючи значення нового елемента в кінець:
seek ( f, filesize ( f ));
write ( f, v ).
Дійсно, після виклику seek файловий вказівник встановлюється за останнім елементом, тобто
f0f1f2...fN
¬
а після виклику write значення v записується в новий елемент, після чого файловий вказівник переміщається вправо:
f0f1f2...fNfN+1
¬
Процедура TRUNCATE задає знищення решти файла, починаючи від доступного елемента. Наприклад, після виконання викликів
seek(f, 3); truncate(f)
елементи з 3-го по останній знищуються, а залишаються з номерами 0, 1 і 2.
Використання процедур прямого доступу дозволяє вилучати елементи з файла.Приклад 4. Наведемо програму, яка задає вилучення непотрібних елементів файла, тобто його стискання.
Нехай у файлі Group.dat зберігається інформація про студентів групи: прізвище, ім’я та середній бал. З клавіатури задається прізвище студента, який вибув – запис про нього треба вилучити з файла.
За наступною програмою файл читається до кінця і в допоміжний файл копіюються ті записи, поле-прізвище яких відрізняється від заданого. Далі файли закриваються, і засобами модуля System старий файл просто знищується, а допоміжному присвоюється зовнішнє ім’ я старого.
program OutFromGroup;
type Student = record
Sname, Name : string[20];
Ball : real;
end;
var Fi, Fo : file of Student; { інформаційний та допоміжний файл }
FileName: string; { ім’ я файла }
procedure OpenFile;
begin