Пример 8.2.
Создать программу демонстрации произвольного доступа к элементам файла. Она заносит в файл последовательно числа в диапазоне от N1 до N2 (целые и положительные). После записи из файла считываются на дисплей все его компоненты с номерами (начиная с 0).
Блок-схема алгоритма приведена на рисунке
Листинг программы
program prg_8_2;
{$mode objfpc}{$H+}
uses
Classes, SysUtils, RusTrans;
label
Exit;
Const
FileDir=’m:\Lazarus_examples\08_2\’;
var
MyFile: File of integer; // Файловая переменная
FilePath, FileName: string;
N1,N2,i,imax,Temp: integer;
begin
writeln(Rus(‘Введите имя файла’));
readln(FileName);
writeln;
FilePath:=FileDir+FileName;
AssignFile(MyFile,FilePath); // Связь файлом на диске
{$I-} // Отключить контроль ошибок
Rewrite(MyFile); // Создать новый файл
{$I+}; // Включить контроль ошибок
if IOResult = 0 // Проверить ошибку открытия
then writeln(Rus(‘Спасибо’))
else
begin
writeln(Rus(‘Ошибка’));
readln;
goto Exit; // Выход при ошибке
end;
writeln;
writeln(Rus(‘Введите N1, N2′));
readln(N1,N2);
writeln;
imax:=N2-N1;
for i:=0 to imax do
begin
Temp:=N1+i;
write(MyFile,Temp); // Записать в файл значение номер i
end;
CloseFile(MyFile);
Reset(MyFile); // Открыть для проверки
writeln(Rus(‘Компоненты файла’));
for i:=0 to imax do // Цикл чтения
begin
Seek(MyFile,i); // Установить указатель
read(MyFile,Temp); // Прочитать элемент
writeln(Rus(‘Компонент ‘),i,’ = ‘,Temp); // Вывести его
end;
CloseFile(MyFile);
writeln;
writeln(‘OK’);
readln;
Exit:;
end.
Консоль перед закрытием программы: