Delphi函数详解:全局函数,内部函数,类的成员函数,类的静态方法
来源:互联网 发布:k核分析 社会网络 编辑:程序博客网 时间:2024/05/20 13:37
1. Delphi中的全局函数
//要点: 需要给其他单元调用, 必须在 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;
{需要给其他单元调用, 必须在 interface 声明, 但必须在 uses 区后面}function MyFun(x,y: Integer): Integer; {函数声明}
var Form1: TForm1;
implementation
{$R *.dfm}
function MyFun(x,y: Integer): Integer; {函数实现}begin Result := x + y;end;
procedure TForm1.Button1Click(Sender: TObject);var i: Integer;begin i := MyFun(1,2); //注意此时MyFun()是个全局函数 ShowMessage(IntToStr(i)); {3}end;
end.
2. Delphi中的内部函数---- unit中implementation区中的内部函数
//要点: implementation 区中的过程或函数, 只能在本单元调用
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; //此时这个函数仅供本unit调用begin Result := x + y;end;
procedure TForm1.Button1Click(Sender: TObject);var i: Integer;begin i := MyFun(1,2); //注意此时MyFun()是个全局函数 end;
end.
3. Delphi中的内部函数---- Procedure/Function中的内部函数
//Delphi 支持过程中的方法
procedure TForm1.Button1Click(Sender: TObject);
procedure alert(s: string);
begin
ShowMessage(s);
end;
begin
alert('Hello');
end;
4. Delphi类的成员函数
//要点: 如果声明在 TForm1 类内, 那它就是 TForm1 类的一个方法了
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); function MyFun(x,y: Integer): Integer; {函数声明在 TForm1 类的体内} {现在这个函数 MyFun 已经是 TForm1 类的一个方法了} end;
var Form1: TForm1;
implementation
{$R *.dfm}
{函数在实现区必须有 TForm1. 作为前缀}function TForm1.MyFun(x,y: Integer): Integer;begin Result := x + y;end;
{调用}procedure TForm1.Button1Click(Sender: TObject); //相当于C++中TForm1::Button1Click();
var i: Integer;begin i := MyFun(1,2);//类的实现内部当然可以调用类的方法MyFun()了 ShowMessage(IntToStr(i)); {3}end;
end.
5. Delphi的类方法---类似于C++中类的静态方法
//类方法就是通过类名就可以访问的方法
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); end;
{类方法示例:}TMyClass = class(TObject) class procedure alert(s: string); {类方法只是比静态方法多了一个 class 指示字}end;{ 类方法不能在 private 和 protected 区; 类方法不能是虚方法; 类方法只能使用类中的、在对象实例化以前的数据.}
var Form1: TForm1;implementation{$R *.dfm}{ TMyClass }class procedure TMyClass.alert(s: string);begin ShowMessage(s);end;{类方法可以直接使用}procedure TForm1.Button1Click(Sender: TObject);begin TMyClass.alert('Hello world');end;{类的对象当然也能使用}procedure TForm1.Button2Click(Sender: TObject);var MyClass: TMyClass;begin MyClass := TMyClass.Create; MyClass.alert('Hello World');MyClass.Free;end;end.--------------------------------------------------------------------------------//静态类方法{现在的 Delphi 不仅仅有类方法, 同时有: 类变量: class var 类常量: class const 类类型: class type 类属性: class property静态类方法就是给类属性来调用的, 它可以存在与私有区(private), 譬如下面的 SetName 就是一个静态类方法:}TMyClass = class(TObject) private class var FName: string; class procedure SetName(const Value: string); static; {静态类方法又多了一个 static 指示字} published class property Name: string read FName write SetName;end;{现在这个函数并没有 var 前缀, 也就是说参数应该不会被修改的}6. Delphi中指针函数参数
function MyFun(p: PInteger): Integer; {PInteger 是 Integer 的指针类型}
begin
p^ := p^ * 2;
Result := p^;
end;
{测试}procedure TForm1.Button1Click(Sender: TObject);var i,x: Integer;begin i := 8;
x := MyFun(@i); {调用函数} ShowMessage(IntToStr(x)); {16}
{现在 i 的值应该不会被修改, 但...} ShowMessage(IntToStr(i)); {16}
{ 没有 var 或 out 前缀的参数, 应该是传值的; 有 var 或 out 的参数是传地址的; 指针就是一个地址, 尽管没有指定传地址, 但事实上就是给了一个地址, 所以参数值也会改变!}end;
0 0
- Delphi函数详解:全局函数,内部函数,类的成员函数,类的静态方法
- 回调函数的使用封装(支持全局函数,类静态函数,类成员函数)
- 静态全局函数和静态成员函数的区别
- 类的静态成员函数
- 类的静态成员函数
- 类的静态成员函数
- 类的 静态成员 --- 静态成员变量 、 静态成员函数
- C++类的成员函数,静态函数以及虚函数
- 类的成员函数和全局函数的互相调用
- 把全局函数指针指向类的成员函数
- C++类的常成员函数以及静态成员函数
- 静态-全局静态函数(或变量)和类的静态成员函数(或变量)
- LUA的内部全局函数
- 全局函数访问类成员方法
- 类的非静态成员函数指针详解
- 关于编译器对c++ 类静态成员、静态成员函数、非静态成员函数的处理
- 函数指针(全局函数/类成员函数)和函数对象
- 静态类成员函数
- SQLAlchemy指南(tutorial)
- bzoj1411 硬币游戏 分治
- 判断Fragment是否可见,填坑
- C++: 解释error: call of overloaded ‘abs(int)’ is ambiguous
- 你还在问android横竖屏切换的生命周期?
- Delphi函数详解:全局函数,内部函数,类的成员函数,类的静态方法
- insert插入数据
- 前端样式学习
- 七层登录——C#
- iOS延时操作
- mysql 线程等待时间,解决sleep进程过多的办法
- Spring Security 3.x完整入门配置教程及其代码下载
- 创建一个对象都在内存中做了什么事情?
- iOS关于App上线构建版本一直正在处理的解决方法