关于函数返回值的问题?
(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中有所改变了。
问题点数:20、回复次数:7Top
1 楼aiirii(ari-http://spaces.msn.com/members/aiirii/)回复于 2003-11-04 15:06:52 得分 4
>>我记得以前看书上说在函数中对函数名赋值就结束函数了。
>>但是现在(1)赋值后并没有结束函数,而是继续执行下去。
不對, 還要加個exit; 才行!!
就算在c, c++中, 也要用return 啊!
Top
2 楼searoom(海龙)回复于 2003-11-04 15:16:49 得分 3
给函数名赋值了之后,函数并不会退出的啊Top
3 楼IORILI(眼镜)回复于 2003-11-04 15:31:40 得分 3
是吗???一直都用result返回Top
4 楼IORILI(眼镜)回复于 2003-11-04 15:32:57 得分 0
不过我同意aiirii(ari)的说法Top
5 楼DelphiBird(爱你等于爱自己)回复于 2003-11-04 15:41:15 得分 3
Delphi中给result复值,如果后面还有代码,函数并不会退出,还会继续执行;
C++中用了reurn之后就会退出,不关后面还有没有代码;Top
6 楼fengjn(颗粒)回复于 2003-11-04 15:56:53 得分 3
>>我记得以前看书上说在函数中对函数名赋值就结束函数了。
没有看见过这种说法Top
7 楼Piao40993470(ミ飘ミ)回复于 2003-11-04 16:01:48 得分 4
对函数赋返回值后,代码本来就会继续运行下去的,就连比较老的Turbo Pascal都是这样。((我现在机子上没Turbo Pascal,今晚回家后证实一下。实践证明一切。Top




