home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 14 / tools / chk.inc next >
Encoding:
Text File  |  1989-03-21  |  2.5 KB  |  84 lines

  1. (* ------------------------------------------------------ *)
  2. (*                     CHK.INC                            *)
  3. (*  für Turbo Pascal 3.x / 4.0 / 5.0  zum selbsttätigen   *)
  4. (*  Virentest                                             *)
  5. (*  Achtung: Nur auf .EXE/.COM - File anwenden!           *)
  6. (*       (c) 1989  Klaus Ruzicka  &  TOOLBOX              *)
  7. (* ------------------------------------------------------ *)
  8.  
  9. PROCEDURE selftest(name : str12);
  10.  
  11. CONST test : ARRAY [0..24] OF CHAR =
  12.                            '1111111111000000000000000';
  13.  
  14. VAR i, laenge : INTEGER;
  15.     datei     : FILE OF CHAR;
  16.     zaehler   : INTEGER;
  17.     c         : CHAR;
  18.     vgl, tst  : ARRAY[0..24] OF CHAR;
  19.  
  20. BEGIN
  21.   vgl := '0000000000000000000000000';
  22.   tst := '0000000000000000000000000';
  23.   FOR zaehler := 0 TO 9 DO BEGIN
  24.     vgl[zaehler] := '1';
  25.     tst[zaehler] := '1';
  26.   END;
  27. {$I-}
  28.   Assign(datei, name);
  29.   Reset(datei);
  30. {$I+}
  31.   zaehler := IOResult;
  32.   IF zaehler <> 0 THEN BEGIN
  33.     WriteLn('Selbsttest: DOS-Fehler Nr.:', zaehler);
  34.     Halt(1);
  35.   END;
  36.   FOR zaehler := 10 TO 24 DO
  37.     Read(datei, vgl[zaehler]);
  38.   IF test = tst THEN BEGIN
  39.                           { Datei noch nicht initialisiert }
  40.     Reset(datei);
  41.     WriteLn('Selbsttest: Initialisierung.');
  42.     WriteLn('(C) 1989 Klaus Ruzicka & TOOLBOX');
  43.     WriteLn('...nur auf .EXE- und .COM-Files anwenden, ');
  44.     WriteLn('Dateien bitte nicht mit EXEPACK packen!');
  45.     i       := 0;
  46.     zaehler := 0;
  47.     laenge  := FileSize(datei);
  48.     REPEAT
  49.       Read(datei, c);
  50.       IF c = chr(49) THEN zaehler := zaehler + 1
  51.                      ELSE zaehler := 0;
  52.       i := i + 1;
  53.       IF (i MOD 500) = 0 THEN BEGIN
  54.         GotoXY(1, 5);
  55.         WriteLn('Lese Byte ', i:6, ' von ', laenge:6);
  56.       END;
  57.     UNTIL (i = laenge - 1) OR (zaehler = 10);
  58. {$I-}
  59.     IF zaehler = 10 THEN
  60.       FOR zaehler := 10 TO 24 DO
  61.         Write(datei, vgl[zaehler])
  62.     ELSE BEGIN
  63.       WriteLn(chr(7) +
  64.                  'Selbsttest: Fehler bei Initialisierung!');
  65.       Halt(1);
  66.     END;
  67. {$I+}
  68.     zaehler := IOResult;
  69.     if zaehler <> 0 then begin
  70.       Writeln('Selbsttest: DOS-Fehler Nr.:', zaehler);
  71.       Halt(1);
  72.     END
  73.   END ELSE
  74.             { Datei bereits initialisiert --> Testen ob ok }
  75.   IF test <> vgl THEN BEGIN
  76.     Writeln(Chr(7) +
  77.         'Selbsttest: Dateibeginn wurde verändert! Virus? ');
  78.     Halt(1);
  79.   END;
  80.   Close(datei);
  81. END;
  82. (* ------------------------------------------------------ *)
  83. (*                   Ende von CHK.INC                     *)
  84.