如何实现循环的延迟。(100分)

  • 主题发起人 主题发起人 悲痛莫明
  • 开始时间 开始时间

悲痛莫明

Unregistered / Unconfirmed
GUEST, unregistred user!
我想while 实现循环,但是我需要一个延迟的效果
while
begin
//我想加一个函数,使得循环能够每执行一步就 停一下

end
我试过用sleep
可是没有成功。
 
应该是sleep(1000);//1000为一秒钟
 
sleep(1000)为延时,但不能循环暂停!
暂停应该用showmessage('XXX');//里面为你要提示的内容!!
你自己可以追加其他提示和相应操作!
 
我暂停的意思
不是中断,而是循环仍在执行
不过没有循环一次就要一个一个时间上的停顿
[:(!]
 
》》》不过没有循环一次就要一个一个时间上的停顿
是什么意思?
 
application.ProcessMessages
//做你要做的事情
 
没明白意思。
 
sleep就行了
 
可以设计一个计数器,用它来做延时。
 
至少有两种可行的办法:
1、利用 application.ProcessMessages 过程
2、利用 Ttimer 控件代替while 循环语句,在ontimer事件中判断条件
和执行你所需要的工作。
 
可是我想用 ttimer
我的意思其实是这样的
我要的是一个动态的显示
如我每隔一段时间就
写一个字
我想用while实现
 
你可以把这个过程写在TTIMER的ONTIME事件里,比如每隔0.3秒显示一个字符,这样比用
SLEEP好多了!
 
application.ProcessMessages 怎么用呀
 
加入一个 Tedit,TButton 试试
var
MyEvent:Thandle;
i:integer;
begin
i := 0;
MyEvent :=CreateEvent(nil,True,False,nil);
while i < 10 do
begin
i := i+1;
Waitforsingleobject(myevent,1000);
edit1.Text:=edit1.Text+inttostr(i);
edit1.Refresh;
end;
end;
 
建议用timer来做
在timer中设一个变量来记录循环次数
因为用sleep的话
这时候程序就不干什么了
 
做一个比较大的空循环就可以啊
 
可以用beep;
 
真是的竟然没有一个高手,用这个函数把
var
dd:tdatetime;
dd:=now+encodetime(0,0,0,xx);
while now<dd do

application.prossg..
xx为毫秒数.
 
用timer
Label1.Caption := Copy(S,1,Delta);//s为你想显示的完整字串
delta := delta+1;
 
多人接受答案了。
 
后退
顶部