. Бинарные файлы - часть 2
b,bx:byte;
a:^mas;
{$I-}
begin
if paramcount<>2 then
begin
writeln('Используйте: ',paramstr(0),' входной_файл выходной файл');
exit;
end;
assign(fb,paramstr(1));
assign(fbx,paramstr(2));
reset(fb);
if ioresult<>0 then
begin
writeln('Ошибка открытия файла: ',paramstr(1));
exit;
end;
reset(fbx);
if ioresult<>0 then
begin
writeln('Ошибка открытия файла: ',paramstr(2));
exit;
end;
n:=filesize(fb);
nx:=filesize(fbx);
{ if n<>nx then begin
writeln('файлы ',paramstr(1),' и ',paramstr(2),' не идентичны');
exit;
end;}
t:=false;
if n=nx then
begin
getmem(a,nx);
t:=true;
while n>=0 do
begin
read(fb,b);
read(fbx,bx);
if b<>bx then
begin
a^[nx-n]:=bx;
t:=false;
end;
n:=n-1;
end;
if not t then
begin
writeln('различия в файлах:');
for i:=1 to nx do
writeln('номер байта в файле ',i,' ,байт',a^[i] );
end;
freemem(a,nx);
end;
if t then writeln('файлы ',paramstr(1),' и ',paramstr(2),' идентичны');
if n<>nx then
begin
writeln('файлы ',paramstr(1),' и ',paramstr(2),' не идентичны');
exit;
end;
close(fb);
close(fbx);
end.
Упражнение 13.27. Создайте упрощенную версию команды ср, копирующую один файл в другой с отображением файла на память.
uses crt,sysutils,linux;
type
smth=array [0..0] of char; (*безразмерный массив*)
psmth=^smth; (*то же, что и pchar*)
var
s1,s2:array [0..1000] of char; (*для имен файлов*)
t1,t2:integer; (*дескрипторы файлов*)
n,w:longint; (*счетчик байт и размер файла*)
m:tmmapargs; (*запись с параметрами mmap*)
p1,p2:psmth; (*указатели, возвращаемые mmap*)
BEGIN
writeln('Введите имя первого файла');