Delphi面向对象的编程方法(三)

8.4 过程和函数的语句部分 

过程或函数的语句部分由begin开始,end结束。函数需要一个返回值。可以将返回值赋给函数名称,也可以将返回值赋给Result变量。下面的例程将返回值赋给函数名称: 

function CalculateInterest(Principal,InterestRate: Double):Double;

begin

CalculateInterest := Principal * InterestRate;

end; 

将返回值赋给Result变量也是可以的,则上面的程序改为: 

Result := Principal*InterestRate;

下面是这个函数的调用方法:

InterestEarned :=CalculateInterest(2000,0.012);

在Implementation后面的过程和函数,可以且只能被此库单元的事件处理过程使用。要让过程和函数可以被其他的程序库单元使用,则需要将过程或函数的标题部分放在库单元中的interface部分,而把含标题的整个过程或函数放在库单元的inplementation部分,并在要访问这个过程或函数的库单元的uses子句中加入说明这个过程或函数的库单元名称。 

8.5 函数的递归调用 

在Object Pascal中,过程或函数必须先说明再调用。上文的NoValue函数必须在使用它的事件处理过程之前说明和执行,否则程序会报告一个未知标识符的错误。

以上规则在递归调用时是例外情况。所谓递归调用,是指函数A调用函数B,而函数B又调用函数A的情况。在递归调用中,函数要进行前置,即在函数或过程的标题部分最后加上保留字forword。下文的例程是一个递归调用的典型例子: 

implementation

var

alpha:Integer;

procedure Test2(var A:Integer):forword;

{Test2被说明为前置过程}

procedure Test1(var A:Integer);

begin

A :=A-1;

if A>0 then

test2(A); {经前置说明,调用未执行的过程Test2}

writeln(A);

end;

procedure Test2(var A:Integer);{经前置说明的Test2的执行部分}

begin

A :=A div 2;

if A>0 rhen

test1(A); {在Test2中调用已执行的过程Test1}

end; 

procedure TForm1.Button1Click(Sender:TObject);

begin

Alpha := 15; {给Alpha赋初值}

Test1(Alpha); { 第一次调用Test1,递归开始}

end; 

按钮的OnClick事件处理过程给Alpha赋初值,并实现先减1再除2的循环递归调用,直到Alpha小于0为止。 

8.6 过程和函数的参数 

点击复制链接 与好友分享!回本站首页
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力
上一篇:Delphi面向对象的编程方法(二)
下一篇:Delphi面向对象的编程方法(四)
相关文章
图文推荐

Delphi面向对象的编程方法(三)
delphi 7 连接 MySql
Delphi面向对象的编程方法(三)
Delphi函数参数中的陷
Delphi面向对象的编程方法(三)
Delphi图像处理 --
Delphi 应用 openm

Delphi面向对象的编程方法(三)

排行
热门
26 | 用Delphi编写U盘整盘数据清除程序
21 | Delphi中易混淆的概念 Owner, Paren
20 | Delphi XE5教程3:实例程序
20 | Delphi 7 控件安装
18 | jpeg图片压缩
17 | Delphi 设置代理服务
17 | Delphi Fastreport报表
15 | Delphi结束指定进程EndProcess
delphi的取整函数round、trunc、ceil和
Delphi安装/卸载OCX控件的方法
Delphi 日期时间函数详解
Assertion failure: "(!"SetThreadC
Runtime error 216 at xxx 故障解
delphi内存泄露查找工具之MemProof教程
Delphi多线程及消息发送传递结构体参数
Delphi 判断一个字符串是否为数字
文章
下载
读书
· Win2000下关闭无用端口
· 禁止非法用户登录综合设置 [win9x篇]
· 关上可恶的后门——消除NetBIOS隐患
· 网络入侵检测系统
· 潜伏在Windows默认设置中的陷井
· 调制解调器的不安全
· 构建Windows 2000服务器的安全防护林
· SQL Server 2000的安全配置
· Windows优化大师注册机源码
· Process Viewer 汉化版
· Aspcode动画教程
· WIN 2000服务器防止ICMP数据包攻击教程
· 实现网络隐身的简单方法
· 手工进行克隆帐号
· 用W32DASM破解网页合并器的密码
· 注册表操作动画教程
· 黑客攻防技术宝典:Web实战篇(第2版)
· 超级网管员——网络安全
· 代码大全(第二版)
· 软件之道:软件开发争议问题剖析
· CSS插件工具箱
· CSS入门经典(第3版)
· C#并行编程高级教程:精通.NET 4 Pa
· CMMI+敏捷整合开发
分类:默认分类 时间:2015-03-11 人气:6
本文关键词:
分享到:

相关文章

Copyright (C) quwantang.com, All Rights Reserved.

趣玩堂 版权所有 京ICP备15002868号

processed in 0.067 (s). 10 q(s)