Процедура BlockWrite.

Формат обращения:

blockwrite(Var F : file; Var Buf; Kolblocks : word; result : word);

Процедура предназначена для быстрой передачи в файл F определенного числа записей из переменной Buf. Все параметры процедуры blockwrite аналогичны параметрам процедуры blockread. Разница лишь в том, что файл должне быть подготовлен для записи процедурой rewrite. Содержимое переменной Buf целиком помещается в файл, начиная с текущей записи.

Обе процедуры выполняют операции ввода-вывода блоками. Объем блока в байтах определяется по формуле:

Объем = Kolblocks * recSize,

где recSize – размер записи файла, заданный при его открытии. Суммарный объем разового обмена не должен превышать 64 Кбайт. Помимо скорости передачи данных преимущество этих процедур заключается в возможности пользователя самостоятельно определять размер буфера для файловых операций. Эта возможность играет значительную роль в тех задачах, где необходимо жесткое планирование ресурсов. Программист должен позаботиться о том, чтобы длина внутреннего представления переменной Buf была достаточной для размещения всех байт при чтении информации с диска.

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

Если при чтении указана переменная Buf недостаточной длины или если в процессе записи на диск не окажется нужного свободного пространства, то произойдет следующее. Если последний параметр result в этих вызовах не задан, то возникает ошибка ввода-вывода; если параметр result задан, то ошибка не будет зафиксирована, а после выполнения процедуры его значение не будет совпадать с значением параметра Kolblocks. Последнее обстоятельство можно проверить, сравнив два указанных значения.

После завершения процедуры указатель смещается на result записей.

Рассмотрите примеры простых задач.

Задача № 1. Составить программу, которая создает нетипизированный файл из 100 чисел и выводит на экран k-ый элемент.

Program Netipiz1;

Uses

Crt;

Type

FileType = file;

Var

f : FileType;

P, B, k : byte;

Begin

ClrScr;

assign(F, 'MyFile');

rewrite(F,1);

Randomize;

for k := 1 to 100 do

begin

P := Random(100);

blockwrite(F, P, 1);

end;

close(F);

reset(F,1);

for k := 1 to 100 do

begin

blockread(F, P, 1);

write(p,' ');

end;

write('Введите номер нужного элемента ');

readln(k);

Seek(F, k-1);

blockread(F, P, 1);

writeln(k,'-ий элемент файла равен ', P);

close(F);

End.

Задача № 2. Составить программу, которая создает копию элементов нетипизированного файла f и помещает в файл g.

Program Netipiz2;

Uses

Crt;

Var

f, g : file;

Stroka1, sб Stroka2 : string;

Begin

ClrScr;

write('Введите имя исходного файла');

read(Stroka1);

assign(f, Stroka1);

rewrite(f,1);

write('Введите содержимое файла ');

repeat

readln(s);

blockwrite(f, s, 1);

until readKey = #27;

close(f);

reset(f,1);

write('Введите имя конечного файла');

read(Stroka2);

assign(g, Stroka2);

rewrite(g,1);

while not Eof(f) do

begin

blockread(f, s, 1);

blockwrite(g, s, 1);

end;

close(f);

close(g);

write('Содержимое конечного файла:');

while not Eof(g) do

begin

blockread(g, s, 1);

write(s);

end;

readln;

End.

Задача № 3. Составить программу, которая создает массив целых чисел и записывает его в нетипизированный файл, а также вычисляет среднее арифметическое элементов файла.

Program Netipiz3;

Uses

Crt;

Var

f : file;

i, k, s : integer;

Mas : Array [1..10] of byte;

Begin

ClrScr;

Randomize;

for i := 1 to 10 do

Mas[i] := Random(10);

assign(f, 'file.dat');

rewrite(f,1);

blockwrite(f, Mas, 10);

close(f);

reset(f,1);

while not Eof(f) do

begin

blockread(f, k, 1);

s:= s+k;

Inc(i);

end;

close(f);

write(s/i:5:2);

readln;

End.

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








Дата добавления: 2015-05-16; просмотров: 787;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.008 сек.