end end; (Check) {.-. ——-.——————/

Procedure Save;

{Запоминает заголовок файла в константе HEAD} var

s: LongInt;

r: registers;

p: Pointer;

begin {Save}

with Head,Head.HE do begin

HL := FileSize(f); {Получаем длину файла}

HF :« True; {Устанавливаем признак контроля}

Г.АН :- $62;

MSDOS(r); {Получаем в г.ВХ сегмент PSP) р := @н;

s := round( (DSeg-r.BX-16+HdrSi2e)*16.0)+ofs(p'');

{s - смещение ключа. Н от начала файла} end;

Seek(f,s); (Позиционируем файл на начало ключа) {Шифруем ключ:} Randomize;

Head.Key := Random($FPFF);

with Head,Head.HE do for s :° 1 to 14 do

Hem[s] := HE.Hem[s] xor Key;

{Запотнаем ключ в файле} BlockWrite(f,Head,SizeOf(H)) ;

CheckVirusResult := 1 end; {Save}

{,., —————.——————— ———J

Function UpString(s: String): string;

{Преобразует символы строки S в верхний регистр/ var

k: Byte;

begin {UpString}

for k := 1 to Length(s) do s[k] :» UpCase(s[k]) ;

UpString := s end; {OpStringj ^-——————————;

Procedure GetParams;

(Получить параметры запуска! var

k,j: Byte;

begin

(Анализ ключей команды запуска:} NoAnti :° False;

NoQuery := False;

NoAlarm := False;

Noi-opy := False;

for к :- 1 to ParamCount do for j := 1 to 4 do

if UpString(ParamStr(k)) = Key[j] then case j of

ч: NoAnti := True;

2: NoQuery := True;

3: NoAlarm := True;