procedure TForm1.Open1Click(Sender: TObject);
label 
  EnterAgain;  // LABEL 在这里
begin
EnterAgain: //here
  OpenDialog1.Execute;  try
    Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
  except
  on E: Exception do
  begin
    goto EnterAgain;  //这个 GOTO 走不动
  end;
  end;  // end tryend; 
 

解决方案 »

  1.   

    procedure TForm1.Open1Click(Sender: TObject);
    beginlabel EnterAgain;  // 这个只是声明  EnterAgain: // 这才是真正标号在的地方
      OpenDialog1.Execute;  try
        Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
      except
      on E: Exception do
      begin
        goto EnterAgain;  // 再试试行不行
      end;
      end;  // end tryend;真是佩服你,大家都在远离goto的时候,你来使用它。
    其实你可以不用goto的:procedure TForm1.Open1Click(Sender: TObject);
    begin
     repeat
      OpenDialog1.Execute;  try
        Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
        break; // 用这个跳出循环
      except
        ; // 出了问题,什么都不做,再一次循环
      end; // try until False; // 死循环end;
      

  2.   

    while True do begin
        OpenDialog1.Execute;
        try
          Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
          Break;
        except
        end;
      end;
      

  3.   

    goto不能出现在try语句中
    能不用goto的地方最好不要用
    goto我只用在跳出多重循环for ... := ... to .. do
      for ... := ... to .. do
        for ... := ... to .. do
          if ... then goto loop;
    loop: