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;