退出Delphi中的“if”

时间:2012-07-27 10:18:06

标签: delphi

您可以使用中断退出循环。

如何退出 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;

7 个答案:

答案 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