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