delphi中有办法在另一个过程或函数里结束另外一个过程或函数里的循环??
我要模拟一下按键精灵..但是需要开始和结束程序运行的功能.前提是程序不能关闭.只是结束正在运行的过程或函数而已..就是整个程序不关闭.但结束正在运行的所有,比如开始按钮函...
我要模拟一下按键精灵..但是需要开始和结束程序运行的功能.前提是程序不能关闭.只是结束正在运行的过程或函数而已..就是整个程序不关闭.但结束正在运行的所有,比如开始按钮函数里产生的循环
我在开始按钮里有个无限的WHILE循环..但我想在结束按钮里面结束整个程序或是结束开始按钮的过程..应该怎么办??我试过在结束按钮里用
以下是代码片断:
procedure TForm1.btn1Click(Sender: TObject);
var
i:Integer;
begin
i:=0;
lbl1.Caption:=IntToStr(i);
while i<20 do
begin
lbl1.Caption:=IntToStr(i);
Delay(500);
i:=i+1;
end;
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
end;
按钮2里面我要怎么写才能结束按扭1里面正在运行的循环?? 展开
我在开始按钮里有个无限的WHILE循环..但我想在结束按钮里面结束整个程序或是结束开始按钮的过程..应该怎么办??我试过在结束按钮里用
以下是代码片断:
procedure TForm1.btn1Click(Sender: TObject);
var
i:Integer;
begin
i:=0;
lbl1.Caption:=IntToStr(i);
while i<20 do
begin
lbl1.Caption:=IntToStr(i);
Delay(500);
i:=i+1;
end;
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
end;
按钮2里面我要怎么写才能结束按扭1里面正在运行的循环?? 展开
3个回答
展开全部
你按钮1的循环用 多线程来实现,就可以用按钮2来中断这个线程
追问
线程我还不会啊..给个简单的例子呗
追答
这个你可以参考下, delphi 里 Demos 文件夹里 Threads 的 示例,你可以看到 如何用线程操作 ,里面的示例是三个排序方法的多线程调用。
线程类的声明,实现,线程函数。 模仿一下。很久没动delphi 了,你可以百度 delphi 多线程,很多示例的。个人实在写不出示例,都是拿别人的模仿的。
下面这些是节选自 Threads 的SortThds.pas 开头线程类的声明
type
{ TSortThread }
PSortArray = ^TSortArray;
TSortArray = array[0..MaxInt div SizeOf(Integer) - 1] of Integer;
TSortThread = class(TThread) //这里是TSortThread 类声明 继承自 基本线程类 TThread
private //私有成员
FBox: TPaintBox; //这个是一个 TPaintBox 类,因为示例中要对主窗口的一个 TPaintBox 对象操作,所以声明一个
FSortArray: PSortArray; // 用来存放要排序的数组
FSize: Integer;
FA, FB, FI, FJ: Integer; //几个整形变量声明
procedure DoVisualSwap; //这里是以FBox进行操作,画线之类的,是Sort 调用 VisualSwap 时调用到的!!
protected
procedure Execute; override; //重载,在这里执行你自己写的函数 ,这里是排序 Sort
procedure VisualSwap(A, B, I, J: Integer);
procedure Sort(var A: array of Integer); virtual; abstract; //抽象的 Sort排序函数,因为现在这个类只是三种排序的基类,所以用抽象的,在具体排序类中再实现。
public
constructor Create(Box: TPaintBox; var SortArray: array of Integer);//就是构造函数吧,用来初始化类的各个成员。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
设置一个全局变量:var fstop:boolean;
procedure TForm1.btn1Click(Sender: TObject);
begin
.........
if fstop then exit;
................
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
fstop:=true
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
.........
if fstop then exit;
................
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
fstop:=true
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询