home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 14 / tools / selftest.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1989-03-21  |  2.1 KB  |  79 lines

  1. (* ------------------------------------------------------ *)
  2. (*                   SELFTEST.PAS                         *)
  3. (*  Testet sich selbst auf unerlaubte Veränderungen...    *)
  4. (*        (c) 1989  Klaus Ruzicka  &  TOOLBOX             *)
  5. (* ------------------------------------------------------ *)
  6. UNIT selftest;
  7.  
  8. INTERFACE
  9.  
  10. TYPE str8 = STRING[8];
  11.  
  12. PROCEDURE self_test(name : str8);
  13.  
  14. IMPLEMENTATION
  15.  
  16. PROCEDURE self_test(name : str8);
  17. VAR datei          : FILE;
  18.     info           : FILE OF LONGINT;
  19.     block          : ARRAY [1..128] OF BYTE;
  20.     i, test,
  21.     sumvgl, laevgl : LONGINT;
  22.     found          : BOOLEAN;
  23.     j              : INTEGER;
  24.  
  25. BEGIN
  26.   WriteLn('SELBSTTEST:  Testet sich selbst auf unerlaubte ',
  27.           'Veränderungen,');
  28.   WriteLn('             legt ein Informationsfile mit dem ',
  29.           'Namen ',name,'.INF an.');
  30.   WriteLn;
  31.   writeln('(C) 1989 Klaus Ruzicka  &  TOOLBOX');
  32. {$I-}
  33.   Assign(datei, name + '.EXE');
  34.   Reset(datei);
  35. {$I+}
  36.   found := (IOResult = 0) AND (FileSize(datei) > 0);
  37.   IF NOT found THEN BEGIN
  38.     WriteLn(Chr(7) + name + '.EXE nicht gefunden!');
  39.     Halt(1);
  40.   END;
  41.   test := 0;
  42. {$I-}
  43.   Assign(info, name + '.INF');
  44.   Reset(info);
  45. {$I+}
  46.   found := (IOResult = 0) AND (FileSize(info) > 0);
  47.   IF NOT found THEN BEGIN
  48.     WriteLn('Selbsttest wird initialisiert!');
  49.     Rewrite(info);
  50.   END ELSE BEGIN
  51.     WriteLn('Selbsttest wird durchgeführt');
  52.     Read(info, sumvgl);
  53.     Read(info, laevgl);
  54.   END;
  55.   IF found AND (laevgl <> FileSize(datei)) THEN BEGIN
  56.     WriteLn(Chr(7) + 'Fehler beim Längenvergleich! Virus?');
  57.     Halt(1);
  58.   END;
  59.   FOR i := 0 TO FileSize(datei) - 1 DO BEGIN
  60.     BlockRead(datei, block, 1);
  61.     FOR j := 1 TO 128 DO
  62.       test := test + block[j];
  63.   END;
  64.   IF NOT found THEN BEGIN
  65.     Write(info, test);
  66.     i := FileSize(datei);
  67.     Write(info, i);
  68.   END ELSE
  69.     IF test <> sumvgl THEN BEGIN
  70.       WriteLn(Chr(7)
  71.               + 'Fehler beim Prüfsummenvergleich! Virus? ');
  72.       Halt(1);
  73.     END;
  74. END;
  75.  
  76. BEGIN
  77. END.
  78. (* ------------------------------------------------------ *)
  79. (*                 Ende von SELFTEST.PAS                  *)