Delphi 2006正确使用END

Delphi 2006 proper use of END

看这段代码:

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 关闭 if Zakljucaj(1011,tmps,3)BEGIN,最后一个 END 关闭 BEGIN 的开始 IF。这是关闭它们的正确方法吗,编译器现在哪一端指的是代码的哪一部分?而且,编译器是否知道 else 部分引用 case 语句? 如果没有,有没有办法明确地做到这一点?

您的代码在语法上是正确的。但是缩进有点偏离,你不应该缩进块的 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;

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