home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* CODE.PAS *)
- (* Routine zum Einlesen eines getakteten Codeworts *)
- (* und Demo für Turbo Pascal 3.0/4.0 *)
- (* (c) 1989 Christian Ramsauer & TOOLBOX *)
- (* ------------------------------------------------------ *)
- PROGRAM Code;
-
- USES Crt, Dos; (* Turbo Viernull *)
-
- CONST cl = 10;
- abw = 25;
- cw : STRING[cl] = 'Teststring';
- ct : ARRAY[2..cl] OF INTEGER =
- (100, 100, 100, 100, 100, 100, 100, 100, 100);
-
- VAR i, t1, t2, t3 : INTEGER;
- ch : CHAR;
- stop : BOOLEAN;
-
- PROCEDURE CodePruefen;
-
- FUNCTION Time : INTEGER; (* Turbo Viernull *)
- VAR h, m, s, s100 : WORD;
- BEGIN
- GetTime(h, m, s, s100);
- Time := s * 100 + s100;
- END;
-
- { FUNCTION Time : INTEGER; (* Turbo Drei *)
- VAR regs : RECORD
- ax,bx,cx,dx,bp,si,di,ds,es,flags : INTEGER;
- END;
- BEGIN
- regs.ax := $2C00;
- MsDos(regs);
- Time := Hi(regs.dx) * 100 + Lo(regs.dx);
- END;
-
- FUNCTION ReadKey : CHAR;
- VAR ch : CHAR;
- BEGIN
- Read(Kbd, ch);
- ReadKey := ch);
- END;
- }
-
- BEGIN
- stop := TRUE;
- REPEAT UNTIL KeyPressed;
- i := 1;
- ch := ReadKey;
- IF ch = cw[i] THEN stop := FALSE;
- WHILE (i < cl) AND (ch <> #13) DO BEGIN
- i := i + 1;
- t1 := Time;
- ch := ReadKey;
- t2 := Time;
- t3 := t2 - t1;
- IF t3 < 0 THEN t3 := 6000 - t3;
- IF (t3 > ct[i] + abw) OR (t3 < ct[i] - abw) OR
- (ch <> cw[i]) THEN stop := TRUE;
- END;
- REPEAT
- ch := ReadKey;
- UNTIL ch = #13;
- IF stop THEN BEGIN
- WriteLn('Falscher Code!', #7);
- Delay(1000);
- HALT;
- END;
- WriteLn('Code ist richtig eingegeben worden...');
- END;
-
- BEGIN
- CodePruefen;
- REPEAT UNTIL KeyPressed;
- END.
-
- (* ------------------------------------------------------ *)
- (* Ende von CODE.PAS *)