一个关于数据循环的问题?(50分)

  • 主题发起人 主题发起人 harmer
  • 开始时间 开始时间
H

harmer

Unregistered / Unconfirmed
GUEST, unregistred user!
在一query的循环中,如何执行以下操作?
也就是每一次循环都要等到wb为true才能再执行下面事件,
query1.open;
query1.first;
for i:=0 to query1.RecordCount do
begin
...在这里如何等到外部一变量wb传回true时才让他执行? //此处如何做?
比如在此等候10秒,才继续执行
if wb=true then
begin

end;

next;
end;
 
如果你能确定十秒内wb能传过来,那就用个延迟函数好了。
 
在说了,我提点疑问
if wb=true then
begin

end;
然后循环都没结束,又没什么条件,那么程序怎么可能跳出循环,既然跳不出,那么wb也不
可能改变,那么这个程序还有什么意义。
把if放在最开始就可以实现了呀
如果我说错了请指点
 

query1.open;
query1.first;
for i:=0 to query1.RecordCount do
begin
.....
在此发送命令,外部将在一定的时间内传回变量 ,所以if wb=true不能放在外面
if wb=true then
begin
.... //因程序需要执行某一事件
wb:=false; //那么自然能退出本循环
end;

next;
end;
 
延迟函数我这里正好有一个
var tmpd:tdatatime;
begin

tmpd:=now();
repeat
application.ProcessMessages ;
until now()>tmpd+2*(1/24/60/60);
end;

拿去用吧
 
延迟:这样程序会停滞?
 
在外部设置一个布耳变量,然后当外部程序完成是对变量操作,然后在query的程序里面用
时间函数不停检测变量,当变量为真是往下操作,可否
 
这个问题我也很想再了解一下,mat说的这个程序确实很费CPU,但稍改一下就好多了。
var tmpd:tdatatime;
begin

tmpd:=now();
repeat
application.ProcessMessages ;
       sleep(5); // 让程序睡会儿,哈哈5毫秒嘛,算什么,不是吗?     
until now()>tmpd+2*(1/24/60/60);
end;

但好像在C语言中不用这么做的,他有一个叫semctl、semget、semop的方法可以;
但好像原理也是当一个信号量为0时让进程进入睡状态。

 
帮忙提前!!!
 
接受答案了.
 
后退
顶部