关于函数返回值的问题?

jacky_shen 2003-11-04 02:51:52
(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中有所改变了。
...全文
22 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
微雪缤纷 2003-11-04
  • 打赏
  • 举报
回复
对函数赋返回值后,代码本来就会继续运行下去的,就连比较老的Turbo Pascal都是这样。((我现在机子上没Turbo Pascal,今晚回家后证实一下。实践证明一切。
fengjn 2003-11-04
  • 打赏
  • 举报
回复
>>我记得以前看书上说在函数中对函数名赋值就结束函数了。

没有看见过这种说法
DelphiBird 2003-11-04
  • 打赏
  • 举报
回复
Delphi中给result复值,如果后面还有代码,函数并不会退出,还会继续执行;
C++中用了reurn之后就会退出,不关后面还有没有代码;
IORILI 2003-11-04
  • 打赏
  • 举报
回复
不过我同意aiirii(ari)的说法
IORILI 2003-11-04
  • 打赏
  • 举报
回复
是吗???一直都用result返回
searoom 2003-11-04
  • 打赏
  • 举报
回复
给函数名赋值了之后,函数并不会退出的啊
aiirii 2003-11-04
  • 打赏
  • 举报
回复
>>我记得以前看书上说在函数中对函数名赋值就结束函数了。
>>但是现在(1)赋值后并没有结束函数,而是继续执行下去。
不對, 還要加個exit; 才行!!
就算在c, c++中, 也要用return 啊!

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧