我一直在为我的学校制作一个库存计划(在虚拟帕斯卡中),作为其中的一部分,我希望能够显示今天的日期以及当前主要时间程序的菜单。现在,我已经能够显示正确的日期,因为这非常简单。
但是当我使用此代码显示Time时,它只显示编译程序的时间,并且不刷新以显示当前时间。
Procedure getTheTime;
VAR
Hour, Minute, Second, Sec100 : WORD;
BEGIN
GetTime( Hour, Minute, Second, Sec100 );
TEXTCOLOR(lightgreen);
whereY;
whereX;
WRITE;WRITE(' ');
WRITE( Hour, ':', Minute, ':', Second, '.', Sec100);
END;
基本上,它显示:19:8:41.75 随着时间的推移,我想要时间刷新。
任何帮助都将不胜感激。
我调用getTheTime过程的过程。
Procedure mainMenu;
BEGIN
REPEAT
CLRSCR;
getTheDate;
getTheTime;
TEXTCOLOR(15);
GOTOXY(18,2);
WRITELN('Welcome To RAK Academy''s School Shop');
TEXTCOLOR(11);
GOTOXY(18,3);
WRITELN('------------------------------------');
WRITELN;
WRITE('A ':25);
TEXTCOLOR(15);
WRITELN(': Customers');
WRITELN;
TEXTCOLOR(11);
WRITE('B ':25);
TEXTCOLOR(15);
WRITELN(': Products');
WRITELN;
TEXTCOLOR(11);
WRITE('C ':25);
TEXTCOLOR(15);
WRITELN(': Orders');
WRITELN;
TEXTCOLOR(11);
WRITE('X ':25);
TEXTCOLOR(15);
WRITELN(': Exit');
WRITELN;
GOTOXY(0,3);
WRITE('Enter Choice: ':23);
MenuChoice:=UPCASE(READKEY);
sndPlaySound('F:\School\IB 1\HL subjects\Computer Science\Pascal programs\InternalAssessment\sound files\beep.wav', snd_Async or snd_NoDefault );
TEXTCOLOR(11);;
WRITELN(MenuChoice);
TEXTCOLOR(15);
DELAY(200);
CASE MenuChoice OF
'A' : CustomersMenu;
'B' : ProductsMenu;
'C' : OrdersMenu;
'X' : BEGIN
sndPlaySound('F:\School\IB 1\HL subjects\Computer Science\Pascal programs\InternalAssessment\sound files\end.wav', snd_Async or snd_NoDefault );
WRITELN;
WRITELN('Program Is Shutting Down');
GOTOXY(25,15);
DELAY(750);
WRITE('.');
DELAY(750);
WRITE('.');
DELAY(750);
WRITE('.');
DELAY(750);
END
ELSE
BEGIN
WRITELN;
TEXTCOLOR(12);
WRITELN('ERROR - Only Enter A-B Or X To Exit. Please Try Again.');
TEXTCOLOR(11);
READKEY;
END;
END;
UNTIL menuChoice='X';
END;
答案 0 :(得分:0)
不是程序编译的时间,而是程序运行的时间。
BEGIN-END之间的代码运行一次,然后更新时间。 如果您想要更新时间,则需要添加一个更新OnTimer事件触发时间的计时器。
答案 1 :(得分:0)
从内存中,了解如何执行此操作:
var updatecounter : integer;
mustexit : Boolean;
updatecounter:=10; mustexit:=false;
repeat //eventloop start.
if keypressed then
begin
c:=readkey;
if c=#0 then
c2:=readkey; // C=#0 is functionkey, read second value
mustexit:=processkey(c,c2); // process whatever key is pressed
end
else
begin
sleep(10); // windows/winprocs unit? Don't know VP that well.
// pauses 10ms
dec(updatecounter);
if updatecounter=0 then // every 10*10ms update time
begin
updatetime; // update the time.
updatecounter:=10;
end;
end;
until mustexit;
您可以实现各种过程并使用常量来获得所需的响应。