Delphi 2006正确使用END

时间:2017-10-24 09:03:41

标签: delphi if-statement case delphi-2006

看看这段代码:

if Poruka(BM_UWARN, GetMsg('Da li zaista želite da odbijete nalog?')) = mrOk then
  begin
    tmps := TRN.ss;
    TrnPom.ss := TRN.ss;
    RadnikOdbio.l := AdresniSlog.Rabotnik;
    if Zakljucaj(1011, tmps, 3) then
      begin
        FRazlogOdbNal.ShowModal;
        case FRazlogOdbNal.ModalResult of
          mrOk:              
            BeBankComment.ss := FRazlogOdbNal.beRazlogOdbijanja.ss;              
          else
            Otkljucaj(1011, tmps, 3);
            exit;
        end;
      end;
   end;

这段代码的作用并不重要,我需要帮助的是我在这部分代码中使用了足够的ENDs。所以第一个ENDCASE语句。第二个END关闭BEGIN的{​​{1}},最后一个if Zakljucaj(1011,tmps,3)关闭END的{​​{1}}。这是关闭它们的正确方法,编译器现在哪个结束指的是代码的哪一部分?而且,编译器是否知道BEGIN部分引用了IF语句? 如果没有,有没有办法明确这样做?

1 个答案:

答案 0 :(得分:3)

您的代码在语法上是正确的。然而,缩进有点偏,你不应该缩进块的begin。 Rad Studio自动格式化程序的默认行为是将它们对齐:

if Poruka(BM_UWARN, GetMsg('Da li zaista želite da odbijete nalog?')) = mrOk then
begin
  tmps := TRN.ss;
  TrnPom.ss := TRN.ss;
  RadnikOdbio.l := AdresniSlog.Rabotnik;
  if Zakljucaj(1011, tmps, 3) then
  begin
    FRazlogOdbNal.ShowModal;
    case FRazlogOdbNal.ModalResult of
      mrOk:
        BeBankComment.ss := FRazlogOdbNal.beRazlogOdbijanja.ss;
    else
      Otkljucaj(1011, tmps, 3);
      exit;
    end;
  end;
end;

您在问题中陈述的其他内容是正确的。