home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / program / 167 / pascal / stopwatc.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1987-08-19  |  3.2 KB  |  103 lines

  1. PROCEDURE Stop_Watch;
  2. VAR
  3.    which,
  4.    dummy,
  5.    key_state, W_key,
  6.    x, y : integer ;
  7.    msg : Message_Buffer ;
  8. BEGIN
  9.    Total_Sec := 0;
  10.    Hide_Mouse ;
  11.    REPEAT             { wait for button up }
  12.       which := Get_Event( E_Timer | E_Button, $0001, 0, 0,
  13.                0, { time count of zero - quik return }
  14.                false, 0, 0, 0, 0, false, 0, 0, 0, 0, { no rect's }
  15.                msg, W_Key,   { what key }
  16.                dummy, dummy, x, y, key_state ) ;
  17.    UNTIL which>33;
  18.    Paint_Color( 0 ) ;             { erase pm/am marker }
  19.    Paint_Rect( 270,110,20,10 ) ;
  20.    REPEAT
  21.       { Get a left mouse button event. check for button push to stop clock }
  22.       which := Get_Event( E_Timer | E_Button, $0001, 0, 0,
  23.                           0, { time count of zero - quik return }
  24.                           false, 0, 0, 0, 0, false, 0, 0, 0, 0, { no rect's }
  25.                           msg, W_Key,   { what key }
  26.                           dummy, dummy, x, y, key_state ) ;
  27.       So_Far := Ticks ;
  28.       Temp_Sec := So_Far - Start ; { how many seconds times 200 have past }
  29.       Temp_Sec := Temp_Sec DIV 200 ;  { convert to seconds }
  30.       Total_Sec := Original_Sec + Temp_Sec ;  { original time + time elapesed }
  31.       { ** if greater than 19 hrs start counting over ** }
  32.       IF Total_Sec > 68399 THEN
  33.       BEGIN
  34.          Start := Ticks;
  35.          Original_Sec := 0 ;
  36.          So_Far := Ticks ;
  37.          Temp_Sec := So_Far - Start ; { how many seconds times 200 have past }
  38.          Temp_Sec := Temp_Sec DIV 200 ;  { convert to seconds }
  39.          Total_Sec := Original_Sec + Temp_Sec ; {original time + time elapesed}
  40.       END;
  41.            { now break down Total_Sec into hours, minutes and seconds }
  42.       Hr := INT( Total_Sec DIV 3600 ) ;
  43.       N := Hr ;
  44.       Total_Sec := Total_Sec - N*3600 ;
  45.       Min := INT( Total_Sec DIV 60 ) ;
  46.       N := Min ;
  47.       Total_Sec := Total_Sec - N*60 ;
  48.       Sec := INT( Total_Sec ) ;
  49.       Hr_10 := Hr DIV 10 ;
  50.       Hr_1 :=  Hr MOD 10 ;
  51.       IF Sec = 0 THEN
  52.       BEGIN
  53.          Sec_1 := 0;
  54.          Sec_10 := 0;
  55.       END
  56.       ELSE BEGIN
  57.          Sec_10 := Sec DIV 10 ;
  58.          Sec_1 := Sec MOD 10 ;
  59.       END;
  60.       IF Min = 0 THEN
  61.       BEGIN
  62.          Min_1 := 0;
  63.          Min_10 := 0;
  64.       END
  65.       ELSE BEGIN
  66.          Min_10 := Min DIV 10 ;
  67.          Min_1 := Min MOD 10 ;
  68.       END;
  69.                          { If digits have change Draw New Digit on the screen }
  70.       IF Sec_1 <> Old_Sec_1 THEN
  71.       BEGIN
  72.          DX := 260 ;
  73.          D_Digit( Sec_1 ) ;
  74.       END;
  75.       IF Sec_10 <> Old_Sec_10 THEN
  76.       BEGIN
  77.          DX := 212 ;
  78.          D_Digit( Sec_10 ) ;
  79.       END;
  80.       IF Min_1 <> Old_Min_1 THEN
  81.       BEGIN
  82.          DX := 148 ;
  83.          D_Digit( Min_1 ) ;
  84.       END;
  85.       IF Min_10 <> Old_Min_10 THEN
  86.       BEGIN
  87.          DX := 100 ;
  88.          D_Digit( Min_10 ) ;
  89.       END;
  90.       IF Hr_1 <> Old_Hr_1 THEN
  91.       BEGIN
  92.          DX := 36 ;
  93.          D_Digit( Hr_1 ) ;
  94.       END;
  95.       IF Hr_10 <> Old_Hr_10 THEN  D_Hr_10 ;
  96.       Text_Color( 2 );
  97.       Old_Hr_10:=Hr_10; Old_Hr_1:=Hr_1;
  98.       Old_Min_10:=Min_10; Old_Min_1:=Min_1;
  99.       Old_Sec_10:=Sec_10; Old_Sec_1:=Sec_1;
  100.    UNTIL which<34;
  101.    Show_Mouse ;
  102. END;  { of Stop_Watch }
  103.