我想用break 跳出循环,机下循环变量Index的值,然后再从Index+1(20分)

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

hug

Unregistered / Unconfirmed
GUEST, unregistred user!
我想用break 跳出循环,记下循环变量Index的值,然后再从Index+1
开始循环,不能用Continue 实现,请帮忙!谢谢!
目的是时按:“暂停”和“继续”功能 ,用goto 语句不行还有别的方法哪?
谢谢
 
用一个全局变量记下就可以
 
这个简单呀,弄个全局变量,在循环中把循环变量记录到全局变量中,不就搞定了。
可以 在循环中
for **** do begin
if ***** then begin
循环变量 := index;
break;
end;
end;
 
to delphilxh:
我用的就是全局变量,问题的观念是,跳出来循环,
怎么在开始循环循环函数一是各类的函数,共有的,
在一个窗体里面调用,在再另一个按钮的事件例实现
暂停和继续动能1
 
扶程星云:xiexie
for **** do begin
if ***** then begin
循环变量 := index;
break;
end;
end;不是这样,应该是如下的意思:
for **** do begin
if ***** then begin//点击暂停按钮
index:=循环变量 ;
break;
end;
end;
然后再点击继续按钮,重新从index+1循环 ,即:
for 循环变量:=index+1 to high(array) do
begin
do sth ;
end;
end;


 
使用一个全局变量,再用exit方法不就得了.
 
hygsxy:谢谢,我辉跳出,但怎么再重新执行循环,
我用了GOTO 不行,您说该怎能让她跳到循环的开始,再重新执行?
请看我给 扶程星云 的恢复
 
你这样就可以了,不要用GOTO:
Index, IsBreak为全局变量,开始和继续就执行下面过程,暂停和退出就设置状态变量IsBreak。
开始Index置0,开始和继续IsBreak的值为false,否则为true

while True do begin//死循环
Inc(Index);
if IsBreak then begin//点击暂停按钮
Exit;
end;
...
end;

这样很清楚了
 
你是不是要把index的值传到循环里面呀?我怎么看不懂呢?
先定义一个全局的计数器
var
Count: Integer;
在窗体创建中赋初值
Count := 0;
然后在循环中赋值
for index := Count to 你想要循环的最大数 do begin
{
循环条件
}
Count := index
//这样下次就可以自动运行了。 或者 Count := Index +1,看你的 循环情况
end;

 
不好意思,昨天没有来,
to yostgxf:我的思想和您的思想差不多,
只是暂停时记下循环变量的值,继续的时候
再从循环变量+1开始循环。我就是不知道怎么实现:
继续的时候.谢谢

to 扶程星云:
您说得很对,先暂停跳出循环后,在点击“继续”按钮时将Count 传入
循环,向您所说的for index:=counter do High(A) do
但不值怎么实现?谢谢
 
你把这个循环的过程写到函数里去:
如:
先定义个全局变量
var
MyLoop : integer;

funcation aaa(i:integer):integer;
var
j:integer;
begin
for j:= i do xxx begin
...
if ... then begin
result := j;
break;
end;
....
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
myloop := aaa(1) ;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
myloop := aaa(myloop) ;
end;
 
to :jianguobu 谢谢,本来我的那个循环救灾一个过程里,
我现在想法是,把循环变量的开始值作为该过程的一个参数,
这样应该可以了,现在问题时暂停后,在继续时,没有反应
我正在查原因!
 
var
Form1: TForm1;
var index :integer;
procedure a(const beginint:integer;const endint:integer);
var i:integer;
begin
for i:=beginint to endint do
begin
if ***** then begin//点击暂停按钮
index:=i ;
break;
end;
//你的其它操作
end;
end;

第一次调用
a(1,10000000000000);
第二次
a(index,10000000000000);
 
早知道楼上的写出来了,我就不写了,唉
 
//这个例子也许对你有帮助。
begin
if 1 = 1 then
begin
if 2 = 2 then
begin
if 3 = 3 then
begin
Halt(1)
{ Halt right here! }//退出。
end;
end;
end;
Canvas.TextOut(10, 10, 'This will not be executed');
end;
 
我已经把代码给出来了呀。
Index, IsBreak为全局变量,开始和继续就执行下面过程,暂停和退出就设置状态变量IsBreak。
开始Index置0,开始和继续IsBreak的值为false,否则为true

procedure a(IsBreak:boolean;var Index:integer);
begin
while True do begin//死循环
Inc(Index);
if IsBreak then begin//点击暂停按钮
Exit;
end;
...
end;
end;
 
像这种情况应该用线程比较好。
 
toCGN 应该怎么用?
我没有用过,谢谢?

大家可以到
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2245556
领分
 
我觉得没必要专门为这个去设计线程。几句代码就可以实现的很好了
 
这里份不多,人很多,谢谢大家,
清道
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2245556
那份吧!快一点!
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
915
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
755
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部