主题:请教,在pascal显示时间??
yi009
[专家分:0] 发布于 2006-05-14 22:32:00
我是想这样做
把执行画面分成两部份
一部执行程序
另一部是执行时间程序(不断更新)
请问有什么例子?
回复列表 (共9个回复)
沙发
贺天行宝 [专家分:2300] 发布于 2006-05-15 19:40:00
uses dos;{important}
{for date}
procedure knowdate;
var
w1,w2,w3,w4:word;
begin
getdate(w1,w2,w3,w4);
writeln('year:',w1);
writeln('month:',w2);
writeln('date:',w3);
writeln('unknown:',w4);
end;
{for exact time}
procedure gettimeone;{add these at the begin of the program}
var
w1,w2,w3,w4:word;
begin
gettime(w1,w2,w3,w4);
writeln('hour:',w1);
writeln('minute:',w2);
writeln('second:',w3);
writeln('percent second:',w4);
end;
procedure gettimetwo;{add these at the end of the program}
var
w1,w2,w3,w4,w5:word;
begin
gettime(w1,w2,w3,w4);
writeln('hour:',w1);
writeln('minute:',w2);
writeln('second:',w3);
writeln('percent second:',w4);
end;
{example}
begin
knowdate;
gettimeone;
{......
your program
......}
gettimetwo;
{make your program quicker!}
end.
加进去就行了
板凳
jtchang [专家分:5370] 发布于 2006-05-16 09:54:00
听意思好象就是在屏幕上显示时间。最好用定时器中断完成。
下面是个例子:最顶行显示时间,而你的程序在做另一方面的工作:打印1-1000的数字。
Uses Dos, Crt;
Const
days : array [0..6] of String[9] =
('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
Var
Int1CSave : Pointer;
i : Integer;
Function IntToStr(n:word):string;
Var
s : String;
Begin
s := '';
Repeat
s := chr( ord('0')+n mod 10 ) + s;
n := n div 10;
Until n = 0;
IntToStr := s;
End;
{$F+,S-,W-}
Procedure TimerHandler; interrupt;
Var
s : String;
y, m, d, dow : Word;
hh,mm,ss,hun : Word;
x1, y1 : word;
Begin
GetDate(y,m,d,dow);
s := IntToStr(y) + '-' + IntToStr(m div 10 ) +
IntToStr(m mod 10 ) + '-'+ IntToStr(d div 10 ) +
IntToStr(d mod 10 );
s := s + ' '+ days[dow];
GetTime(hh,mm,ss,hun);
s := s+' '+IntToStr(hh div 10)+IntToStr(hh mod 10)+':'+
IntToStr(mm div 10)+IntToStr(mm mod 10)+':'+
IntToStr(ss div 10)+IntToStr(ss mod 10);
x1 := Wherex;
y1 := Wherey;
Window(1,1,80,1);
Gotoxy(30,1);
TextColor(Red+8);
Write('Timer ISR Demo');
Gotoxy(50,1);
Write(s);
Window(1,2,80,25);
Textcolor(7);
Gotoxy(x1,y1);
End;
{$F-,S+}
Begin
ClrScr;
Window(1,2,80,25);
GetIntVec($1C,Int1CSave);
SetIntVec($1C,Addr(TimerHandler));
(*** Your Code here. **********)
For i:=1 to 1000 do
Begin
write(i:5);
delay(10);
End;
Writeln;
Writeln('Programmed by j.t.Chang. Press ENTER...');
Readln;
(******************************)
SetIntVec($01C,Int1CSave);
End.
3 楼
贺天行宝 [专家分:2300] 发布于 2006-05-16 19:12:00
喂,没看见时间啊
4 楼
yi009 [专家分:0] 发布于 2006-05-16 20:58:00
但时间不能自动更新
5 楼
jtchang [专家分:5370] 发布于 2006-05-16 23:14:00
郁闷!
我的程序是时间自动更新,一秒一秒在跳啊!
试试用TP7运行我的程序吧!
6 楼
yi009 [专家分:0] 发布于 2006-05-19 20:26:00
但不多会用
7 楼
chorkey [专家分:0] 发布于 2006-07-12 16:38:00
能讲解一下 {$F+,S-,W-}这一类是怎么用的吗?
{$F+,S-,W-}
Procedure TimerHandler; interrupt;
Var
s : String;
y, m, d, dow : Word;
hh,mm,ss,hun : Word;
x1, y1 : word;
8 楼
dongbili [专家分:30] 发布于 2006-07-19 21:00:00
[quote]郁闷!
我的程序是时间自动更新,一秒一秒在跳啊!
试试用TP7运行我的程序吧![/quote]
Error 200:Division by zero.
为什么?
9 楼
绿步甲 [专家分:1610] 发布于 2006-07-22 11:53:00
装CRT补丁
我来回复