Системное программирование в UNIX средствами Free Pascal



. Бинарные файлы - часть 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('Введите имя первого файла');




Содержание  Назад  Вперед