Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Дата и Время    >>    clock
   
 
 Чтение времени из CLOCK$   Сергей Топ 19.01.1996

Программка для чтения текущего времени из устройста "CLOCK$"



1k 
 

Hello All ! Вот еще один интересный способ узнать текущее время. Я думаю, не все об этом знают. Не используется _ни_один_ unit, не вызываются прерывания DOS/BIOS "дать время". Просто читаем время из файла, который называется "CLOCK$" - это стандартный драйвер устройства "часы" для DOS. BTW, тем же способом можно поставить время, записав его туда. -- <\ -----+-- E-mail: stop@stop.karaganda.su \>ergey |op FidoNet: 2:5083/43 aka 40.13 Phone: +7-3212-741177 --- uses Dos,Crt; const days : array [0..6] of String[9] = ('Sunday','Monday','Tuesday', 'Wednesday','Thursday','Friday', 'Saturday'); timeout = 5; var y,ma,d,dow,h, m, s, s100, s1, y_old, ma_old, d_old, dow_old : word; fir:text; Ch:char; xx, yy : word; check_tm : boolean; procedure ShowDate(y, m, d, dow : word); begin TextColor(lightgreen); write( days[dow],', '); TextColor(yellow); write( d:0, '/', m:0, '/', y:0,' '); TextColor(black); write(' '); GoToXY(WhereX - 1, WhereY); end; begin writeln; writeln('Enter go, '#$1a' inc day, '#$1b' dec day, '#$18, ' inc month, '#$19' dec month'); writeln('Esc exit without saving, gray + dec year, gray - inc year'); {$I-} assign (fir,'clock.txt'); reset (fir); if IoResult <> 0 then begin y := 1994; ma := 1; d := 1; end else begin readln (fir,d,ma,y); close (fir); end; y_old := y; ma_old := ma; d_old := d; SetDate (y,ma,d); GetDate(y,ma,d,dow); dow_old := dow; Write('Today is '); xx := WhereX; yy := WhereY; ShowDate(y, ma, d, dow); GetTime(h, m, s, s100); check_tm := true; while true do begin if check_tm then begin while not KeyPressed do begin GetTime(h, m, s1, s100); if s1-s mod 60 = timeout then break; end; if not KeyPressed then break; end; Ch := ReadKey; case Ch of #13 : break; #27 : begin GoToXY(xx,yy); ShowDate(y_old, ma_old, d_old, dow_old); TextColor(LightGray); writeln; SetDate(y_old, ma_old, d_old); Halt(0); end; '+' : begin y := y + 1; check_tm := false; end; '-' : begin y := y - 1; check_tm := false; end; #0 : begin Ch := ReadKey; case Ch of #77 : begin if d < 31 then d := d + 1; check_tm := false; end; #75 : begin if d > 1 then d := d - 1; check_tm := false; end; #72 : begin if ma < 12 then ma := ma + 1; check_tm := false; end; #80 : begin if ma > 1 then ma := ma - 1; check_tm := false; end; end; end; end; GoToXY(xx,yy); SetDate (y,ma,d); GetDate(y,ma,d,dow); ShowDate(y, ma, d, dow); end; SetDate(y,ma,d); assign(fir,'clock.txt'); rewrite(fir); writeln(fir,d,' ',ma,' ',y); close(fir); TextColor(LightGray); writeln; end.