Delphi 函数指针 过程/函数类型
2012-03-28 16:27
453 查看
Pascal 中的过程类型与C语言中的函数指针相似,为了统一说法,以下称函数指针。函数指针的声明只需要参数列表;如果是函数,再加个返回值。下面讲解指向非对象(一般的)函数/过程的函数指针。例如声明一个过程类型,该类型带一个通过引用传递的整型参数:
typeIntProc = procedure (var Num: Integer); //IntProc是指向过程的函数指针这个过程类型与任何参数完全相同的例程兼容,即用它声明的变量,可以指向任何此类函数,并通过其进行函数的调用。下面是一个兼容例程:
procedure DoubleTheValue (var Value: Integer);beginValue := Value * 2;end;函数指针能用于两种不同的目的:声明函数指针类型的变量;或者把函数指针作为参数传递给另一例程。利用上面给定的类型和过程声明,你可以写出下面的代码:
varIP: IntProc;X: Integer;beginIP := DoubleTheValue;X := 5;IP (X);end;虽然这种调用方法比直接调用麻烦了,那么我们为什么要用这种方式呢?(1)因为在某些情况下,调用什么样的函数需要在实际中(运行时)决定,你可以根据条件来判断,实现用同一个表达,调用不同的函数,很是灵活.(2)利用函数指针我们可以实现委托,委托在.NEt中被发挥的淋漓尽致,但Delphi同样能实现(3)实现回调机制delphi中可以通过函数指针把一个函数作为参数来传递,然后在另外一个函数中调用。1) 首先,申明函数指针类型TFunctionParameter。
typeTFunctionParameter = function(const value : integer) : string;2)定义准备被作为参数传递的函数
function One(const value : integer) : string;beginresult := IntToStr(value) ;end;function Two(const value : integer) : string;beginresult := IntToStr(2 * value) ;end;3) 定义将要使用动态函数指针参数的函数
function DynamicFunction(f : TFunctionParameter; const value : integer) : string;beginresult := f(value) ;end;4)上面这个动态函数的使用实例
vars : string;begins := DynamicFunction(One,2011) ;ShowMessage(s) ; //will display "2006"s := DynamicFunction(Two,2011) ;ShowMessage(s) ; // will display "4022"end;
相关文章推荐
- Delphi:记录类型、过程指针、函数(方法)指针字段的应用
- Delphi 函数指针 过程/函数类型
- Delphi 函数指针 过程/函数类型
- Delphi 函数指针 过程/函数类型
- Delphi 函数指针 过程/函数类型
- Delphi 函数指针 过程/函数类型
- Delphi 函数指针 过程/函数类型
- Delphi 函数指针 过程/函数类型
- delphi 函数过程类型 委托...?
- Delphi过程函数传递参数的几种方式
- 将指针强制类型转换为函数指针
- Delphi 记录类型- 结构指针
- Delphi 记录类型- 结构指针
- Delphi--过程和函数
- typedef int (* func)(int ,int ) 定义函数指针类型 的理解
- 两个delphi下遍历指定目录下指定类型文件的函数
- 函数指针、类型别名与智能指针
- 定义指向模板函数的函数指针类型
- Delphi指针相关函数
- 【java基础】引用类型数组初始化中,setter和getter函数空指针问题