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;
内层循环内的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;