时间的延迟(10分)

  • 主题发起人 主题发起人 colsnake
  • 开始时间 开始时间
C

colsnake

Unregistered / Unconfirmed
GUEST, unregistred user!
如何使用时间延迟函数?
 
延迟2000ms
sleep(2000);
 
用Sleep程序在时间延迟没有响应,应使用

const TIMEDELAYSECONDS=2; //延迟两秒
var
TimeCounter:DWORD;

TimeCounter:=GetTickCount;
while GetTickCount-TimeCounter<TIMEDELAYSECONDS*1000 do
Application.ProcessMessages;
 
哈,我又来补充了

用Sleep程序在时间延迟没有响应,应使用

//延迟2000毫秒
var
TimeCounter:DWORD;

TimeCounter:=GetTickCount;
while GetTickCount-TimeCounter<TIMEDELAYSECONDS do
Application.ProcessMessages();
 
哈,我又来补充了

用Sleep程序在时间延迟没有响应,应使用

//延迟2000毫秒
var
TimeCounter:DWORD;

TimeCounter:=GetTickCount;
while GetTickCount-TimeCounter 》 2000 do //注: 》是大于号。写大于号有问题
Application.ProcessMessages()
 
唉,搞错了!

用Sleep程序在时间延迟没有响应,应使用

//延迟2000毫秒
var
TimeCounter:DWORD;

TimeCounter:=GetTickCount;
while GetTickCount-TimeCounter 《 2000 do //注:《是小于号。写小于号有问题
Application.ProcessMessages()

 
糟糕,HTML语法屏蔽了我程序。亏呀........
 
我的代码是:

const TIMEDELAYSECONDS=2; //延迟两秒
var
TimeCounter:DWORD;

TimeCounter:=GetTickCount;
while GetTickCount-TimeCounter《TIMEDELAYSECONDS*1000 do
Application.ProcessMessages;
 
用While的话别的应用程序就没有响应了. ^_^

既然是延迟, 就意味着程序等待, 等待的时候要什么响应呢.
要响应的部分应该做成独立的线程.

还是sleep好.

另外, 可以变通一下的, 用

while sleeptick < (2*10) do
begin
sleep(100);
application.processmessages;
end;
 
Iknow/pp/sqw的程序考虑了响应,但同时是牺牲了延时的精确性,
如果时序要求不太严格是可以这样对付的。
但如果要求精确,就只有sleep了。
 
方案1:SecondsToWait单位"秒"
function Seconds( timConvert:TDateTime ): longint;
var
Hour, Min, Secs, MSecs, PrevSecs: word;
begin
DecodeTime( timConvert, Hour, Min, Secs, MSecs );
Result := ( Hour*60*60 )+( Min*60 )+Secs;
end;
procedure SecondsToWait( intSeconds: integer; bolProcessMessages: boolean );
var
lngStartSecs, lngElapsed: longint;
begin
lngStartSecs := Seconds(Now);
lngElapsed := 0;
while lngElapsed <= intSeconds do
begin
if bolProcessMessages then Application.ProcessMessages;
lngElapsed := Seconds(Now) - lngStartSecs;
end;
end;
方案2:Delay单位"毫秒"
Procedure Delay(DTime : LongInt);
Var
L : LongInt;
Begin
L := GetTickCount;
While (Abs(L-GetTickCount) < DTime) do;
End;
 
接受答案了.
 
后退
顶部