========>问题简单,来着回答都给分,各位高手快来吧!!!!!!!!!!!!!!!

lyboy99 2001-07-12 05:55:48
如何有很好的方法跳出循环.
如下面程序是时候运行AAAA(string)和BBBB(String)函数,这二个函数会有很常时间的循环,如何作到按停止键就退出这函数的循环.
procedure TForm1.Button1Click(Sender: TObject);

begin
aaaa(word); //程序运行,aaaa(word),bbbb(word)会常时间循环
bbbb(word);

end;
procedure TForm1.Button2Click(Sender: TObject);

begin
//该如何写退出循环的

end;
//是不是要先在aaaa()和BBBB()函数事先加入退出循环监测语句
请高手解答一下,最好写出退出循环的程序,谢谢
...全文
125 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Nicky_he 2001-07-16
  • 打赏
  • 举报
回复
delphi5有个排序的例子,是用多线程写的。
jjdelphi 2001-07-13
  • 打赏
  • 举报
回复
线程怎么写?
Hillside 2001-07-13
  • 打赏
  • 举报
回复
这种情况有2种方法,多线程和precessmessages.

使用precessmessages一定要慎重,因为它有以下副作用:
1.过多的precessmessages会极大的降低程序效率,必须控制它执行的频率
2.它会打乱message que的顺序,造成程序流程的混乱

所以,多线程是比较好的选择,让主线程来管理界面.
这并不是一个简单的问题.
wolfAone 2001-07-12
  • 打赏
  • 举报
回复
来晚了。
NewStarSE 2001-07-12
  • 打赏
  • 举报
回复
上面几位的做法都没错,但机器性能会大大下降,所以如果这种循环用得多,还是用线程吧
Barbarian 2001-07-12
  • 打赏
  • 举报
回复
刚才还没人回答的,怎么等我写完时已有这么多人回答过了:)
Barbarian 2001-07-12
  • 打赏
  • 举报
回复
在循环处理时加入Application.ProcessMessages;
参考如下例程:
procedure TForm1.Button1Click(Sender: TObject);
var i,j:Integer;
begin
for i:=0 to 10000 do
begin
Sleep(1000);
Application.ProcessMessages;
if Application.Terminated then Break;
end;
for j:=0 to 10000 do
begin
Sleep(1000);
Application.ProcessMessages;
if Application.Terminated then Break;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;
lastlove 2001-07-12
  • 打赏
  • 举报
回复
看看,我也想知道-
qin_wei 2001-07-12
  • 打赏
  • 举报
回复
这样简单的问题就用两个线程,就体现不出delphi的优点了。
qin_wei 2001-07-12
  • 打赏
  • 举报
回复
procedure TForm1.aaaa(word);
begin
while (flag=1)do
begin
..............
Application.ProcessMessage();
end
end;

procedure TForm1.Button2Click(Sender: TObject);

begin
flag:=0;
end;
ahphone 2001-07-12
  • 打赏
  • 举报
回复
做两线程吧?

偶只会VC,进来看看,呵呵~~~~~~~~~~
Nicky_he 2001-07-12
  • 打赏
  • 举报
回复
没用的,
应该是写两个进程,
一个做监测,
好象好多例子都有吧。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧