要点5: 函数的返回值可以使用 Result , 也可以使用函数名(但不提倡)
function MyFun1(x,y: Integer): Integer;
begin
Result := x + y;
end;
function MyFun2(x,y: Integer): Integer;
begin
MyFun2 := x + y;
end;
//要点6: Result 可以参与运算, "函数名"不可以
function MyFun(x,y: Integer): Integer;
begin
Result := x + y;
Result := Result * 2;
end;
//要点8: 忘了写返回值的函数, 也可以当过程用(没有人会这样做, 但 Delphi 竟然也允许)
function MyFun(var x: Integer): string;
begin
x := x + 1;
end;
{调用}
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
i := 2;
MyFun(i);
ShowMessage(IntToStr(i)); {3}
end;
//要点9: 没有参数的过程或函数, 在调用时可以省略 (); 也可以带着
function MyFun: string;
begin
Result := 'ok';
end;
{调用}
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
begin
s := MyFun;
ShowMessage(s); {ok}
s := MyFun();
ShowMessage(s); {ok}
end;
//要点10: 过程和函数都可以有一个或多个默认参数; 但必须在非默认参数后面
function MyFun(s1: string; s2: string='好人'): string;
begin
Result := s1 + s2;
end;
{调用}
procedure TForm1.Button1Click(Sender: TObject);
var
str1,str2: string;
begin
str1 := '万一';
str2 := '坏蛋';
ShowMessage(MyFun(str1)); {万一好人}
ShowMessage(MyFun(str1,str2)); {万一坏蛋}
end;
//要点11: 参数可以分为: 默认参数(传值)、var(传址)、out(输出)、const(常数)四类
{默认参数是传值, 不会被改变}
function MyF1(x: Integer): Integer;
begin
Inc(x);
Result := x;
end;
{var参数是传址, 会被改变}
function MyF2(var x: Integer): Integer;
begin
Inc(x);
Result := x;
end;
{out参数是为支持Com的, 和 var 的结果是一样的, 一般我们用不着它}
function MyF3(out x: Integer): Integer;
begin
Inc(x);
Result := x;
end;
{const参数是绝对不可以赋值的, 这是被编译器优化的方式, 尽量多用}
function MyF4(const x: Integer): Integer;
begin
//Inc(x); {这句会出错, 因为带 const 前缀的参数是不可以更改的}
Result := x;
end;
//调用测试
procedure TForm1.Button1Click(Sender: TObject);
var
a: Integer;
begin
a := 6; MyF1(a);
ShowMessage(IntToStr(a)); //6
a := 6; MyF2(a);
ShowMessage(IntToStr(a)); //7
a := 6; MyF3(a);
ShowMessage(IntToStr(a)); //7
a := 6; MyF4(a);
ShowMessage(IntToStr(a)); //6
end;
//要点12: implementation 区中的过程或函数, 只能在本单元调用
//要点13: 需要给其他单元调用, 必须在 interface 声明, 但必须在 uses 区后面
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{implementation 区中的过程或函数, 只能在本单元调用}
function MyFun(x,y: Integer): Integer;
begin
Result := x + y;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
i := MyFun(1,2);
end;
end.
//要点15: 调用其他单元的函数
//包含函数的单元:
unit Unit2;
interface
function MyFun(x,y: Integer): Integer; {函数必须在接口区声明}
implementation
function MyFun(x,y: Integer): Integer; {函数必须在函数区实现}
begin
Result := x + y;
end;
end.
//调用函数的单元:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses Unit2; {必须 uses 定义函数的单元}
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
i := MyFun(1,2); {调用函数}
//i := Unit2.MyFun(1,2); {有时为了避免重名, 需要这样调用}
ShowMessage(IntToStr(i)); {3}
end;
end.
没有合适的资源?快使用搜索试试~ 我知道了~
delphi 面向对象基础示例
共132个文件
txt:11个
pas:9个
dcu:9个
需积分: 9 7 下载量 37 浏览量
2018-05-27
21:21:57
上传
评论
收藏 2.73MB RAR 举报
温馨提示
delphi 面向对象基础示例 接口,覆盖,重载多态,抽象 静态方法 匿名事件属性 属性封装 事件属性 调用其他单元的函数不加类名前缀 程序间互传消息获取其它程序句柄 结构体复制 结构体也可以封装 结构体也可以过程或函数 结构体也可以有构造函数 delphi forward 提前声明
资源推荐
资源详情
资源评论
收起资源包目录
delphi 面向对象基础示例 (132个子文件)
Project2.cfg 434B
Project1.cfg 434B
Project1.cfg 434B
Project1.cfg 434B
Project2.cfg 434B
Project1.cfg 434B
Project1.cfg 434B
Unit1.dcu 8KB
Unit1.dcu 7KB
Unit1.dcu 7KB
Unit1.dcu 7KB
Unit1.dcu 7KB
Unit1.dcu 4KB
Unit1.dcu 4KB
Unit2.dcu 3KB
dog.dcu 1KB
Unit1.dfm 1KB
Unit1.dfm 928B
Unit1.dfm 701B
Unit1.dfm 561B
Unit1.dfm 561B
Unit1.dfm 542B
Unit1.dfm 467B
Unit2.dfm 328B
Project2.dof 2KB
Project1.dof 2KB
Project1.dof 2KB
Project1.dof 2KB
Project1.dof 2KB
Project2.dof 2KB
Project1.dof 2KB
Project1.dpr 263B
Project2.dpr 188B
Project1.dpr 188B
Project1.dpr 188B
Project1.dpr 188B
Project1.dpr 188B
Project2.dpr 188B
Project1.dproj 7KB
Project2.dproj 7KB
Project2.dproj 7KB
Project1.dproj 7KB
Project2.exe 2.05MB
Project1.exe 2.05MB
Project1.exe 2.05MB
Project2.exe 2.05MB
Project1.exe 386KB
Project1.exe 364KB
Project2_Icon.ico 766B
Project1_Icon.ico 766B
Project1_Icon.ico 766B
Project2_Icon.ico 766B
Project2.identcache 139B
Project2.identcache 139B
Project2.dproj.local 62B
Project1.dproj.local 62B
Project2.dproj.local 62B
Project1.dproj.local 62B
Project1.mpb 13KB
Unit1.pas 2KB
Unit1.pas 2KB
Unit1.pas 2KB
Unit1.pas 2KB
Unit1.pas 1KB
Unit1.pas 615B
Unit1.pas 481B
Unit2.pas 428B
dog.pas 305B
Project2.res 3KB
Project1.res 3KB
Project1.res 3KB
Project2.res 3KB
Project1.res 876B
Project1.res 876B
Project1.res 876B
函数运用.txt 4KB
文档.txt 2KB
结构体也可以封装.txt 2KB
文档.txt 1KB
结构体也可以过程或函数.txt 1KB
属性封装.txt 1KB
结构体复制.txt 903B
结构体也可以有构造函数.txt 742B
关于类的向前声明.txt 194B
类的基本概念.txt 96B
类的基本概念.txt 96B
Unit1.pas.~1~ 2KB
Unit1.pas.~1~ 2KB
Unit1.pas.~1~ 1KB
Unit1.pas.~1~ 1KB
Unit1.dfm.~1~ 916B
Unit1.dfm.~1~ 916B
Unit1.dfm.~1~ 549B
Unit1.dfm.~1~ 549B
Unit1.pas.~2~ 2KB
Unit1.pas.~2~ 2KB
Unit1.pas.~2~ 2KB
Unit1.pas.~2~ 2KB
Unit1.dfm.~2~ 928B
Unit1.dfm.~2~ 928B
共 132 条
- 1
- 2
资源评论
ozhy111
- 粉丝: 113
- 资源: 740
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 使用NetBeans连接SQLserver2008数据库教程中文WORD版最新版本
- XPath实例中文WORD版最新版本
- XPath语法规则中文WORD版最新版本
- XPath入门教程中文WORD版最新版本
- ORACLE数据库管理系统体系结构中文WORD版最新版本
- Sybase数据库安装以及新建数据库中文WORD版最新版本
- tomcat6.0配置oracle数据库连接池中文WORD版最新版本
- hibernate连接oracle数据库中文WORD版最新版本
- MyEclipse连接MySQL的方法中文WORD版最新版本
- MyEclipse中配置Hibernate连接Oracle中文WORD版最新版本
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功