双重循环情况下,内层循环内的Continue语句问题(50分)

  • 主题发起人 主题发起人 delhpi
  • 开始时间 开始时间
D

delhpi

Unregistered / Unconfirmed
GUEST, unregistred user!
自己发现问题了,其他地方犯了一个错误。

内层循环内的Continue语句是使控制流跳转到内层循环的开始处,还是直接跳转到外层循环的开始处?

implementation

{$R *.dfm}

function Test(i: integer): string;
begin
result := '成功' + inttostr(i);
end;


procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
IsTested: boolean;
testStr: string;
begin
istested := false; //用来控制重试一次操作
for i := 0 to 10 do
begin
if i < 9 then //假设从9开始才满足条件
continue;
memo2.Lines.add(timetostr(time) + teststr+' ' + inttostr(i)); //外循环执行记录


repeat
memo1.Lines.add(timetostr(time) + ' ' + inttostr(i)); //内循环执行记录

teststr := test(i); //假设根据i的值 运行一个函数 或者过程

if not istested then //第一次故意修改teststr值,造成那个函数返回错误的现象
begin
teststr := '失败';
istested := true; //只测试一次
end;

if pos('失败', teststr) > 0 then
begin
self.Caption := '失败,将重试一次';
Continue; //这里应该返回到 repeat 循环开始处,还是for循环开始处 ?
end
else
break; //运行成功 即退出内循环

until true;
end;

end;
 
应该在内层吧。
 
楼上的没有测试代码吧。
 
接受答案了.
 
后退
顶部