Delphi学习笔记——方法
来源:互联网 发布:淘宝双十一什么意思 编辑:程序博客网 时间:2024/04/28 05:30
和其他语言一样,Object Pascal语言的方法是属于一个给定对象的过程和函数。构造器和析构函数也是方法。
一、方法的类型
方法的类型包括静态(static)、虚拟(virtual)、动态(dynamic)或消息处理(message)。
1.1静态方法 procedure IAmAStatic;静态方法是方法的缺省类型,调用静态方法时能把运行信息静态地链接进可执行文件。其执行速度最快,但不能被覆盖来支持多态性。
1.2虚拟方法 procedure IAmAVirtual; virtual;
1.3动态方法 procedure IAmADynamic; dynamic;
1.4消息处理
procedure IAmAMessage(var M : TMessage); message wm_SomeMessage;1.5方法覆盖
在Object Pascal中能被覆盖的方法是在声明时被标识为virtual 或dynamic的方法
1.6方法的重载overload:能使用相同的名称在一个作用域声明多个例程,并且有不同的参数列表;必须以参数的个数或类型加以区分。
(C++和JAVA中的函数重载不需要overload声明, 注意重载只能形参不一样,返回值必须一样)
Type TSomeClass = class procedure Amethod(I:integer); overload; procedure Amethod(S:string); overload; procedure Amethod(D:double); overload; end;
重新引入方法名称
重新引入方法的名称的使用前提是在派生类中声明的方法名与父类的某个方法名称相同。在派生类中使用reintroduce指示符
或者子类可以重写父类的函数,但是父类必须声明为virtual或者dynamic
Type TSomeBase = class Procedure A; end; TSomeClass = class Procedure A; reintroduce; end;
1.8 self
Self:在所有对象的方法中的一个隐含变量,用来调用方法的指向类实例的指针。(JAVA中也是Self,C++中用this指针)
1.9 方法的嵌套procedure DoSomething(S: string); var X,Y: Integer; procedure NestedProc(S: string); begin ... end; begin ... NestedProc(S); ... end;
2. 调用约定(这个在C++反汇编中已经了解了)
调用约定决定了参数被传递给例程的顺序。默认约定为register。
register、pascal:调用从左到右传递参数;cdecl、stdcall、safecall从右到左传递参数;register使用寄存器传递数据。访问公共属性的方法必须使用register;调用c或C++编写的公共类库时,要使用cdecl;例如:
function MyFunction(X,Y : Real): Real;cdecl;3. Forward(提前声明居然还需要关键字...)
用Forward取代例程块(包括局部变量声明和语句)。其目的是为了将函数或过程在其实际定义前能被使用。例如:
funciton Caiculate(X,Y: Integer) : Real; forward;
4.External
External指示字允许你调用和程序分开编译的例程。当导入一个带有可变数目参数的C++函数时,要使用varags指示子。例如:
function printf(Format: PChar): Integer; cdecl;varargs;链接目标文件要调用目标文件中的例程,首先要使用$L编译器指示字把目标文件链接到你的程序中(C++中的静态链接,lib文件)。例如:
procedure MoveWord(var Source,Dest;Count: Integer); external;
在window下动态导入函数。
function SomeFunction(S: string): string exteranl 'strlib.dll';对于动态导入的库,其名称可以和库中的名称不同。如这样做,则需要用external指定其原始名称。例如:function MessageBox(HWind: Integer;Text,Caption: PChar; Flags: Integer): Integer;stdcall;external 'user32.dll' name5. 参数
5.1 参数分类:value(数值参数)、variable(变量参数)、constant(常量参数)或out(out参数)。默认为value。关键字为var(变量参数)、const(常量参数)、out(out参数);
5.2 数值参数和变量参数
数值参数通过数值传递,变量参数通过引用传递(就相当于把变量当做一个指针来进行传递 类似于C++的引用&)。
5.3 out参数
out参数只是为了输出,即告诉函数或过程在哪里存储输出,但不提供输入。
在声明和定义函数时候在参数前加上变量关键字
procedure GetInfo(out info:SomeRecordType);
当使用这个GetInfo时,你必须传递一个SomeRecordType类型的变量
var MyRecord: SomeRecordType; ... GetInfo(MyRecord);out参数经常用在分布式对象模型中,而且当向函数或过程传递未初始化的变量时,应使用out参数。
5.4 开放数组参数function Find(A: array of Char): Integer;5.5 默认参数
有默认值的参数,必须出现在参数列表的最后。
0 0
- Delphi学习笔记五——方法
- Delphi学习笔记五——方法
- Delphi学习笔记——方法
- Delphi学习笔记五——方法
- Delphi的学习笔记十二——方法1
- Delphi的学习笔记十二——方法2
- Delphi的学习笔记十二——方法1
- Delphi的学习笔记十二——方法2
- Delphi的学习笔记十二——方法
- Delphi学习笔记二——数据类型
- Delphi学习笔记四——语句
- Delphi学习笔记二——数据类型
- Delphi学习笔记四——语句
- Delphi的学习笔记——类
- Delphi学习笔记二——数据类型
- Delphi学习笔记四——语句
- Delphi学习笔记三——运算符
- Delphi的学习笔记八——内存操作函数
- mysql中常用的字符串函数
- linux 下cat都正常显示,vi却显示乱码 问题解决
- 5数据包发送流程
- C++设计模式——基础概念
- WEB前端 实现生成文件 并下载
- Delphi学习笔记——方法
- .NET软件授权管理解决方案Eziriz .NET IntelliLock控件详细介绍
- 参考文献管理工具
- android问题(bug)解决
- 被误解的外链判定标准
- 一种利用个人手机自动发送验证码的短信平台解决方案
- Activity和dialog的关系
- Java中的软引用,弱引用和虚引用
- 6常用网络相关命令