home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 03 / tricks / checksum.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1989-11-29  |  1.6 KB  |  61 lines

  1. (* ------------------------------------------------------ *)
  2. (*                    CHECKSUM.PAS                        *)
  3. (*  Mit dieser Unit kann sich ein Programm nach jedem     *)
  4. (*  Start selbst auf Veränderungen überprüfen.            *)
  5. (*        (c) 1990 G. Hegmanns  &  TOOLBOX                *)
  6. (* ------------------------------------------------------ *)
  7. UNIT CheckSum;
  8.  
  9. INTERFACE
  10.  
  11. USES Dos, Crt;
  12.  
  13. PROCEDURE CheckProgFileForChange(DrivePathAndName : STRING);
  14.  
  15. IMPLEMENTATION
  16.  
  17. PROCEDURE CheckProgFileForChange(DrivePathAndName : STRING);
  18.  
  19. VAR
  20.   Prog         : FILE;
  21.   Block        : ARRAY [1..15000] OF BYTE;
  22.   BlockLength  : WORD;
  23.   Lrc          : BYTE;
  24.   Z            : WORD;
  25.   IOError      : BOOLEAN;
  26.  
  27. BEGIN
  28.   IOError := FALSE;
  29.   Assign(Prog, DrivePathAndName);
  30.   {$I-}
  31.   Reset(Prog, 1);
  32.   {$I+}
  33.   IF IOResult > 0 THEN IOError := TRUE;
  34.   IF NOT IOError THEN BEGIN
  35.     lrc := 0;
  36.     REPEAT
  37.       {$I-}
  38.       BlockRead(Prog, Block, SizeOf(Block), BlockLength);
  39.       {$I+}
  40.       IF IOResult > 0 THEN IOError := TRUE;
  41.       FOR Z := 1 TO BlockLength DO Inc(Lrc, Block[Z]);
  42.     UNTIL (BlockLength = 0) OR IOError;
  43.   END;
  44.   IF IOError THEN BEGIN
  45.     WriteLn;
  46.     WriteLn('Fehler beim Lesen des Programms.');
  47.     Halt(255);
  48.   END;
  49.   IF lrc > 0 THEN BEGIN
  50.     WriteLn;
  51.     WriteLn('Fehler: ', 256 - Lrc);
  52.     writeln('Der Code wurde nach dem Compilieren geändert');
  53.     writeln('Programm wird nicht ausgeführt.');
  54.     writeln('Bitte System auf Viren untersuchen!');
  55.     Halt(255);
  56.   END;
  57. END;
  58. END.
  59. (* ------------------------------------------------------ *)
  60. (*                Ende von CHECKSUM.PAS                   *)
  61.