主题:[讨论]求PASCAL计时器的用法
会思考的泥巴
[专家分:0] 发布于 2007-04-22 17:24:00
请教高手!怎么样在PASCAL利用计时器?
我和同学打赌我程序速度比他快,但是现在没有好的计时手段啊!
回答加分啊!
回复列表 (共12个回复)
沙发
angwuy [专家分:2280] 发布于 2007-04-22 19:12:00
用dos单元的gettime函数
板凳
bigchen [专家分:1940] 发布于 2007-04-23 12:14:00
编写bat(dos批处理文件)文件
3 楼
angwuy [专家分:2280] 发布于 2007-04-23 18:54:00
@echo off
time <新建 文本文档.txt
程序名
time <新件 文本文档.txt
4 楼
会思考的泥巴 [专家分:0] 发布于 2007-04-24 13:07:00
请问新建文本文档里有什么内容?
5 楼
angwuy [专家分:2280] 发布于 2007-04-24 19:13:00
一个回车
6 楼
bigchen [专家分:1940] 发布于 2007-04-24 21:31:00
可以新建一个文件
什么都不写
直接把文件名改为ENTER
和测试用的BAT文件放在一起可以少按几个空格
7 楼
LSQ [专家分:220] 发布于 2007-05-05 10:20:00
@echo off
time <新建 文本文档.txt
程序名
time <新件 文本文档.txt
8 楼
maxumi [专家分:2200] 发布于 2007-05-14 15:52:00
这是一个计时器单元:
{ millisecond timer Unit }
Unit msecs;
Interface
Var
timer:Word; { msec timer }
idle:Procedure; { you can change this to do something useful when Delaying}
Procedure Delay_ticks(t:Word); { resume Until t clock ticks have elapsed }
Procedure start_clock; { starts the 1 msec timer }
Procedure stop_clock; { stops the 1 msec timer }
Implementation
Uses Dos;
Procedure Delay_ticks(t:Word);
begin
inc(t,timer);
Repeat idle Until Integer(timer - t) >= 0;
end;
Const clock_active:Boolean = False;
one_msec = 1193;
Var save_clock:Pointer;
clocks:Word;
Procedure tick_int; Far; Assembler;
Asm
push ax
push ds
mov ax,seg @data
mov ds,ax
mov al,$20
out $20,al
inc [timer]
add [clocks],one_msec
jnc @1
pushf
call [save_clock]
@1:
pop ds
pop ax
iret
end;
Procedure start_clock;
begin
if clock_active then Exit;
inc(clock_active);
timer := 0;
clocks := 0;
getintvec($08,save_clock);
setintvec($08,@tick_int);
port[$43] := $36;
port[$40] := lo(one_msec);
port[$40] := hi(one_msec);
end;
Procedure stop_clock;
begin
if not clock_active then Exit;
dec(clock_active);
port[$43] := $36;
port[$40] := 0;
port[$40] := 0;
setintvec($08,save_clock);
end;
Procedure nothing; Far;
begin
end;
Var saveexit:Pointer;
Procedure uninstall; Far;
begin
Exitproc := saveexit;
if clock_active then stop_clock;
end;
begin
timer := 0;
idle := nothing;
saveexit := Exitproc;
Exitproc := @uninstall;
end.
以上
9 楼
bigchen [专家分:1940] 发布于 2007-05-23 22:04:00
@echo off
if "%1"=="" goto loop
copy [i][b]work1%1.in [/b][/i][i][b]work1.in [/b][/i]>nul
echo Problem Test
echo Data %1
time<enter
[i][b]work1[/b][/i]
time<enter
fc [i][b]work1.out work1%1.out[/b][/i]
del [i][b]work1.in[/b][/i]
del [i][b]work1.out[/b][/i]
pause
goto end
:loop
for %%i in ([i][b]1 2 3 4 5 6 7 8 9 10[/b][/i]) do call %0 %%i
:end
10 楼
bigchen [专家分:1940] 发布于 2007-05-23 22:05:00
加粗部分为根据实际情况修改
我来回复