begin {Auto} AF := False;

for k •.sc 1 to ParamCount do begin

s := ParamStr(k);

for j := 1 to Length(s) do s[jl := OpCase(s[j]);

if s = '/AUTO' then

AF := True end;

fs = полное имя DAT-файла:} s := copy(ParamStr(0),l,pos('.',ParamStr(O)))+'DAT';

fГотовим коллекцию имен файлов} FColl := New(PCollection, Init(lOt), 10)) ;

{Формируем список дисковых описателей} GetListDisk(Disks) ;

Assign(F,s) ;

^1-;

Reset(F); {Проверяем существование архива} {$!+} if (IOResult<>0) or

not CheckHead then

BuildArch (Создаем, если нет архива) else (Файл существует}

CheckBoots; (Проверяем структуру ЖД} Auto := AF end; {Auto} /————————————;

Procedure Dialog;

{Осуществляет диалог с пользователем. Возвращает STOP=TRUE, если пользователь отказался от контроля. Использует средства библиотеки Turbo Vision} begin

New(AntiV) ;

with AntiV" do begin Init;

HelpFile := copy(ParaaStr(0),X,pos('.',ParamStr(0)))+'HLP';

RegisterHelpFile;

Run;

Done end;

Dispose(AntiV) end; {Dialog} ^————————————;

Procedure Check;

{Осуществляет контроль файлов по эталонам, хранящимся в коллекции FColl} var

FF: Pile;

Function Cure(SecO,Sec: LType): Byte;

{Проверяет тип файла и расположение в нем вируса и возвращает:

О - вирус в начале ЕХЕ-/Ьайла (не удаляется)

1 - вирус в конце ЕХЕ или СОМ-файяа

2 - вирус в начале СОМ-фаЯла

3 - пользователь не разрешил удалять вирус} var

С: Byte;

Eq: Boolean;

begin

with SecO do