ind : index;
countgroup : integer;
begin
reset (filedata);
rewrite (binfile);
countgroup : = 0;
repeat
ind := 1;
геаd (filedata, binfile [ind]);
if not еоf filedata then
begin
repeat
ind := ind + 1;
геаd (filedata, binfile [ind]);
until (ind = sizegroup) or eof (filedata);
if еоf (filedata)
then writeln ('Последняя группа в файле не полна ')
else
begin
put (binfile);
countgroup ; = countgroup +1;
end;
end;
until eof (filedata);
writeln ('Преобразовано', countgroup, 'групп');
end. {convertgroup}
Описание типизированного файла имеет вид
var ftable : file of type_ID;
где type_ID может быть любым типом за исключением файлового. Элементами типизированного файла являются значения указанного типа.
При работе с типизированными файлами можно использовать процедуры Assign, Reset и Rewrite. Текстовый файл, открытый процедурой Reset, доступен только для чтения, а типизированный файл доступен как для чтения, так и для записи. Особенность использования процедур Read и Write для типизированных файлов заключается в том, что каждый из параметров в этом случае должен быть переменной типа type_ID, а выражения и константы недопустимы. Процедуры Readln и Writeln применяются только к текстовым файлам.
Типизированные файлы используются для хранения однородной по типу информации. Если речь идет о хранении числовых данных, следует использовать типизированные файлы, так как величина типизированного файла значительно меньше.
Для эффективного выполнения операций ввода/вывода из внешних файлов в Паскале целесообразно использовать нетипизированные файлы, так как при работе с ними можно использовать быстрые дисковые операции низкого уровня. Нетипизированные файлы дают возможность прямого доступа к любому файлу на диске независимо от его типа и структуры.
Описание нетипизированной файловой переменной имеет вид
var untyped_file : file;
Такая файловая переменная связывается с внешним файлом обычным образом. В числе параметров процедур Reset и Rewrite для нетипизированных файлов кроме файловой переменной имеется необязательный второй параметр типа Word, например:
Reset(untyped_file, n);
Дополнительный параметр n описывает размер индивидуальной записи в файле в байтах. Если параметр n отсутствует, его значение по умолчанию принимается равным 128.
Решим следующую задачу. Пусть имеется внешний файл, в котором хранятся вещественные числа. Требуется написать программу, которая считывает значения из файла и находит в этом файле второе по величине значение. Прежде всего необходимо определить, какой тип имеет файл, содержащий числовые значения. Будем считать, что это — текстовый файл, поскольку в этом случае проще выполнить проверку программы. Такой файл можно создать с помощью любого текстового редактора. При запуске программы необходимо ввести имя внешнего файла. Введенное строковое значение присваивается переменной fi1e_name, которая связывается с файловой переменной in_filе. Затем файл открывается, числовые значения, содержащиеся в нем, считываются и выводятся на экран. Это делается для того, чтобы проверить работу программы. Затем с помощью процедуры Reset указатель возвращается в начало файла, и считывание значений повторяется. Используя операций сравнения и условные операторы, заносим в переменную L1 наибольшее значение, а в переменную L2 — второе по величине. Именно это значение и требовалось найти.
Программапоискавторогоповеличинезначениявтекстовомфайле
program second_largest;
var
t, L1, L2 : real;
file_name : String[9];
in_file : text;
WriteLn(‘Введите имя файла:');
ReadLn(fi1e_name);
Assign(in_fi1e, file_name);
Reset(in_file);
while not eof (in_file) do
begin
Read ( in_file, t );
WriteLn (t);
end;
reset (in_file);
Read (in_file, L1);
Read (in_file, L2);
if L1 < L2 Then
Begin
t := L1;
L1:=L2;
L2:=t;
end;
while not eof (in_file) do
begin
Read(in_fi1e, t);
if t > L1 then
begin
L2:=L1;
L1:=t;
end;
else if (t < L1) and (t > L2) then L2 := t;
end;
c1ose (in_file);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.