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

       

Бинарные файлы


Упражнение 13.24. Напишите программу, копирующую бинарный файл в обратном порядке байт.

var

  fb,copyfb:file of byte;

  size,n:longint;

  b:byte;

{$I-}

begin

   if paramcount<>2 then

  begin

    writeln('Используйте: ',paramstr(0),' входной_файл выходной файл');

    exit;

  end;

  assign(fb,paramstr(1));



  assign(copyfb,paramstr(2));

  reset(fb);

  if ioresult<>0 then

  begin

    writeln('Ошибка открытия файла: ',paramstr(1),' для чтения');

    exit;

  end;

  rewrite(copyfb);

  if ioresult<>0 then

  begin

    writeln('Ошибка открытия файла: ',paramstr(2),' для записи');

    exit;

  end;

  n:=filesize(fb);

  while n>=0 do

   begin

     //n:=n-2;

     seek(fb,n-1);

     //blockread(fb,b,1);

     //blockwrite(copyfb,b,1);

     read(fb,b);

     write(copyfb,b);

     n:=n-1;

   end;

  close(fb);

  close(copyfb);

end.

Упражнение 13.25. Составьте программу кодировки и раскодировки файлов по заданному ключу (строке символов).

{I-}

var

  fin,fout:file of byte;

  pass:string;

  size:longint;

  b:byte;

begin

  if paramcount<>2 then

  begin

    writeln('Используйте: ',paramstr(0),' входной_файл выходной файл');

    exit;

  end;

  assign(fin,paramstr(1));

  assign(fout,paramstr(2));

 

  reset(fin);

  if ioresult<>0 then

  begin

    writeln('Ошибка открытия файла: ',paramstr(1),' для чтения');

    exit;

  end;

  rewrite(fout);

  if ioresult<>0 then

  begin

    writeln('Ошибка открытия файла: ',paramstr(2),' для записи');

    exit;

  end;

  writeln('Введите кодовое слово: ');

  readln(pass);

 

  size:=0;

  while not(eof(fin)) do

  begin

    read(fin,b);

    b:=b xor byte(pass[1 + (size mod length(pass))]);

    write(fout,b);

    inc(size);

  end;

  close(fin);

  close(fout);

end.

Упражнение 13.26. Составьте аналог команды cmp.

type

  mas=array [1..1] of byte;

var

  fb,fbx:file of byte;

  size,n,nx,i:longint;

  t:boolean;



Содержание раздела