{Выводит сообщение 'Нет доступа...' и справку} begin

WriteLn('Нет доступа к файлу ',s);

Help

end; {NotAccess} ^————————-.. ..„^

Function CheckReadfs: String; k,n: Word):Boolean;

(Проверяет корректность чтения и дает сообщение, если требуемое количество К байт не равно прочитанному N байт} begin

if kon then begin

WriteLn('Ошибка чтения из файла ',s);

CheckRead := False end else

CheckRead :°= True end; {CheckRead} ^————————————;

Function CheckWrite(s: String; k,n: Word): Boolean;

{Проверяет корректность записи и дает сообщение, если требуемое количество К байт не равно записанному N байт} begin

if kon then begin

WriteLn('Ошибка записи в файл ',s);

CheckWrite := False end else

Checktorite :=» True end; {CheckRead} /————————————;

Procedure OpenFag;

{Открывает файл-фаг и считывает его код в динамическую память} var

k: Word;

begin

Assign(ff,NF) ;

{$!-}

Reset (ff,l) ;

{$!+}

if IQResult <> 0 then NotAccess(NF) ;

BlockRead(ff,HFag,SizeOf(HFag),k) ;

if not CheckRead(NF,SizeOf(HFag),k) then Halt;

LFag := File3ize(ff)-HFag.HdrSize*16-SizeOf(TKey);

GetMem(CFag,LFag) ;

Seek(ff,FileSize(ff)-LFag),•

BlockRead(ff, СЕ-ад", LFag, k) ;

if not CheckRead(NF,LFag,k) then Halt;

Close(ff) end; {OpenFag} _•————————————/

Function CheckFile: Boolean;

{Проверяет возможность установки защиты и готовит новый заголовок файла} va.s

г: registers;

s: String [1];