(1)
function TfrmEditMainData.CheckContent: Boolean;
begin
  Result := True;
  if edtCorpNameC.Text + edtCorpNameE.Text = '' then
  begin
    ShowMessage(MESSAGE_NOCORPNAME);
    edtCorpNameC.SetFocus;
    CheckContent := False;    <----赋值后并没有结束函数,而是继续执行下去
  end;
  if edtNameC.Text + edtNameE.Text = '' then
  begin
    ShowMessage(MESSAGE_NONAME);
    edtNameC.SetFocus;
    CheckContent := False;
  end;
  if cmbManager.Text = '' then
  begin
    ShowMessage(MESSAGE_NOMANAGER);
    cmbManager.SetFocus;
    CheckContent := False;
  end;
end;(2)
function TfrmEditMainData.CheckContent: Boolean;
begin
  Result := True;
  if edtCorpNameC.Text + edtCorpNameE.Text = '' then
  begin
    ShowMessage(MESSAGE_NOCORPNAME);
    edtCorpNameC.SetFocus;
    Result := False;
    Exit;
  end;
  if edtNameC.Text + edtNameE.Text = '' then
  begin
    ShowMessage(MESSAGE_NONAME);
    edtNameC.SetFocus;
    Result := False;
    Exit;
  end;
  if cmbManager.Text = '' then
  begin
    ShowMessage(MESSAGE_NOMANAGER);
    cmbManager.SetFocus;
    Result := False;
    Exit;
  end;
end;这两个函数一个是通过Result,一个是通过函数名CheckContent返回。
我记得以前看书上说在函数中对函数名赋值就结束函数了。
但是现在(1)赋值后并没有结束函数,而是继续执行下去。
(2)是一般的做法。我以前看的是pascal书(黄色封面的),是不是现在在object pascal中有所改变了。

解决方案 »

  1.   

    >>我记得以前看书上说在函数中对函数名赋值就结束函数了。
    >>但是现在(1)赋值后并没有结束函数,而是继续执行下去。
    不對, 還要加個exit; 才行!!
    就算在c, c++中, 也要用return 啊!
      

  2.   

    Delphi中给result复值,如果后面还有代码,函数并不会退出,还会继续执行;
    C++中用了reurn之后就会退出,不关后面还有没有代码;
      

  3.   

    >>我记得以前看书上说在函数中对函数名赋值就结束函数了。没有看见过这种说法
      

  4.   

    对函数赋返回值后,代码本来就会继续运行下去的,就连比较老的Turbo Pascal都是这样。((我现在机子上没Turbo Pascal,今晚回家后证实一下。实践证明一切。