您可以使用中断退出而循环。
如何退出 if 。
Delphi中有一种 GOTO 吗?
procedure ...
begin
if .... then
begin
here the code to execute
if (I want to exit = TRUE) then
break or GOTO
here the code not to execute if has exited
end;
here the code to execute
end;
答案 0 :(得分:11)
与Piskvor mentioned
类似,使用嵌套的if语句:
procedure Something;
begin
if IWantToEnterHere then
begin
// here the code to execute
if not IWantToExit then
// here the code not to execute if has exited
end;
// here the code to execute
end;
答案 1 :(得分:2)
通常使用break或GOTO不被认为是优雅的编程风格。 我建议你改变你的情况并说:
procedure ...
begin
if .... then
begin
here the code to execute
If (I want to exit <> TRUE) then
here the code to execute if has exited( in your original code)
end;
此处执行的代码
端;
答案 2 :(得分:1)
使用本地inline
程序代替GOTO
句子;
GOTO
句子会降低您的代码的可见性。
procedure ...
procedue Check; inline;
begin
if .... then
begin
here the code to execute
if (I want to exit = TRUE) then
exit;
here the code not to execute if has exited
end;
end;
begin
Check;
here the code to execute
end;
答案 3 :(得分:1)
在阅读了不同的评论之后,我决定发布一个答案来展示如何使用GoTo instruction ... BTW,我更喜欢其他答案中解释的其他方法,避免使用它们:
procedure ...
label
CodeToExecute;
const
iWantToExit = True;
begin
if ... then
begin
ShowMessage('here the code to execute 1');
if iWantToExit then
goto CodeToExecute;
ShowMessage('here the code not to execute if has exited');
end;
CodeToExecute:
ShowMessage('here the code to execute 2');
end;
答案 4 :(得分:0)
您可以使用例外。
在内部if或循环中调用Abort,并在需要继续的地方捕获EAbort异常
procedure ...
begin
try
if .... then
begin
(* here the code to execute *)
if I_want-to-exit then Abort;
(* here the code not to execute if has exited *)
end;
except on E: EABORT do ;
end;
(* here the code to execute *)
end;
答案 5 :(得分:0)
您可以使用以下方法通过使用'break'退出'if'块。以下示例假定表单上有两个编辑框。 repeat ... until true;
取代了通常的begin ... end;
if ... then
repeat
Edit1.Text := 'test';
if someCondition then
break;
Edit2.Text := 'test';
until true;
编辑:澄清,解决方案只是假设问题是脑筋急转弯。这不是我推荐的处理这种情况的方法,我永远不会在我的代码中使用它。
答案 6 :(得分:-1)
可读代码
//如果为cond1,则为cond2,如果为cond3,则-
procedure cond1_cond3;
begin
if
not(Cond1) then exit;
cond1_work;
if
not(Cond2) then exit;
cond2_work;
if
not(Cond3) then exit;
cond3_work;
end;
procedure All_Work;
begin
All_work_1;
cond1_cond3;
All_work_2;
end