今天做程序,需要计算一下调用函数之前和之后所用的时间,期间用了sleep,但是结果发现,我sleep(200),得到的时间竟然有188的时候,我不明白为什么会小于200,这是sleep的问题,还是我计算时间函数的问题呢?,求高人回答谢谢procedure TForm1.Button1Click(Sender: TObject);
var
i,s:integer;
ReadPre, ReadSith: TDateTime;
begin
i:=0;
while i<100 do
begin
ReadPre := Now;
sleep(200);
ReadSith := Now;
s:= MilliSecondsBetween(ReadPre, ReadSith);
memo1.Lines.Add(inttostr(s));
inc(i);
end;
end;end.如上 算出来的时间 每隔3,4个203 就会出现一个188这样的数,这是为什么呢
var
i,s:integer;
ReadPre, ReadSith: TDateTime;
begin
i:=0;
while i<100 do
begin
ReadPre := Now;
sleep(200);
ReadSith := Now;
s:= MilliSecondsBetween(ReadPre, ReadSith);
memo1.Lines.Add(inttostr(s));
inc(i);
end;
end;end.如上 算出来的时间 每隔3,4个203 就会出现一个188这样的数,这是为什么呢
解决方案 »
- 工程能正常编译和运行,但在delphi7中打开某个窗体时提示:class TRMReport not found
- 动态创建的图片控件无法选择!
- 一个通用控制台程序。
- 虽然菜,你试试看...在线等。。。
- 谁有delphi7.0的注册码
- 什么样的类型可以接收这样的函数参数 func([12,321])
- 关于 delphi 5 的picshow2.5控件改编为 delphi 6的几点疑惑!在线等候!
- Delphi7和VS.NET的DLL如何相互调用?
- 初学Delphi,哪本书比较好啊?
- QuickRep中pagenumber是當前頁數,有沒有顯示需列印總頁數的函數或方法嗎?
- 关于串口注册回调函数问题
- 将两个字节的byte转为整形类型
你可以试试用Sleep(1),实际消耗的时间基本在15~16毫秒
procedure MyWait(iLen:DWORD);
var
dwWait :DWORD;
begin
dwWait := GetTickCount();
while GetTickCount - dwWait < iLen do
begin
sleep(1);
Application.ProcessMessages;
end;
end;试试这个
sleep 是暂停的意思。比如你拖动窗口也是会占用时间的。
有人推荐我用GetTickCount
但是没用过
这个帖子 没人回复 谁去接下分啊 20分也是分啊