program lab_4;
type {Описание типов}
f = file of char; {Тип символьного файла}
var {Описание переменных}
nach,konec: longint; {Начальная и конечная позиции}
procedure perevod(symbol: char); {Процедура перевода в 16-код}
procedure view(nach: longint); {Проседура вывода на экран}
var
n: longint; {переменная номера символа в файле}
i,j: integer {переменные счётчиков}
c: char; {символьная переменная}
str: string; {строковая переменная}
a: f; {переменная файлового типа}
begin
{Инициализация файла и позиционирование на нужный элемент кратный 475}
seek(a,nach);
for i:=1 to 25 do
begin
for j:=1 to 19 do
{вывод символов из файла с заменой неотображаемых}
{вывод перегородки}
for j:=1 to length(str) do
{вывод 16-кода с помощью процедуры perevod}
end;
close(a);
end;
procedure scroll(nach,kon:integer); {процедура скроллинга}
var
key:char; {переменная нажатой клавиши}
a:f; {файловая переменная}
begin
{инициализация файла}
repeat
{ввод клавиши}
Case Key of
#80: {вниз}
Begin
{проверка на заполненность страницы}
if kon>filesize(a) then kon:=filesize(a);
if kon<>filesize(a) then
{расчёт новых позиций, передача в процедуру вывода}
end;
#72: {вверх}
Begin
{проверка нахождения на первой странице}
if nach>0 then
{расчёт новых позиций, передача в процедуру вывода}
end;
#13: break;
end;
until false;
end;
begin
{задание начальной и конечной позиций}
view(nach);
scroll(nach,kon);
end.
Введём в программу путь до исходного файла, который необходимо скопировать. Далее введём новый путь, по которому нужно сохранить копию файла. По завершении работы копия файла будет находиться по указанному пути.
Рисунок 1 – Первая страница
Рисунок 2 – Последняя страница
program lab_4;
uses crt;
type
f = file of char;
var
nach,konec: longint;
procedure perevod(symbol: char);
const
mas: array[0..15] of char =('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
var
a,b: char;
begin
a:=mas[ord(symbol) div 16];
b:=mas[ord(symbol) mod 16];
write(' ',a,b);
end;
procedure view(nach: longint);
var
n: longint;
i,j: integer
c: char;
str: string;
a: f;
begin
clrscr;
assign(a,'d:\TEST3.TXT');
reset(a);
seek(a,nach);
n:=nach;
for i:=1 to 25 do
begin
for j:=1 to 19 do
begin
if n=filesize(a) then break;
read(a,c);
if (ord(c)<32) and (ord(c)>0) then
write('*')
else
write(c);
str:=str+c;
inc(n);
end;
{end for}
if n mod 19<>0 then write(' ':19-(n mod 19));
write(' |');
for j:=1 to length(str) do
perevod(str[j]);
str:='';
if n=filesize(a) then break;
if i<>25 then writeln;
end;
{end for}
close(a);
end;
procedure scroll(nach,kon:integer);
var
key:char;
a:f;
begin
assign(a,'d:\TEST3.TXT');
reset(a);
repeat
key:=Readkey;
if key=#0 then key:=readkey;
Case Key of
#80:
begin
if kon>filesize(a) then kon:=filesize(a);
if kon<>filesize(a) then
begin
nach:=nach+475;
kon:=nach+475;
view(nach);
end
{end if}
end;
#72:
begin
if nach>0 then
begin
nach:=nach-475;
kon:=nach+475;
view(nach);
end;
{end if}
end;
#13: break;
end;
until false;
close(a);
end;
begin
nach:=0;
konec:=475;
clrscr;
view(nach);
scroll(nach,konec);
end.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.