在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
首先学习: 指向非对象(一般的)函数/过程的函数指针 Pascal 中的过程类型与C语言中的函数指针相似,为了统一说法,以下称函数指针。函数指针的声明只需要参数列表;如果是函数,再加个返回值。例如声明一个过程类型,该类型带一个通过引用传递的整型参数: type 这个过程类型与任何参数完全相同的例程兼容,即用它声明的变量,可以指向任何此类函数,并通过其进行函数的调用。下面是一个兼容例程: procedure DoubleTheValue (var Value: Integer); begin Value := Value * 2; end; 函数指针能用于两种不同的目的:声明函数指针类型的变量;或者把函数指针作为参数传递给另一例程。利用上面给定的类型和过程声明,你可以写出下面的代码: var 虽然这种调用方法比直接调用麻烦了,那么我们为什么要用这种方式呢? (1)因为在某些情况下,调用什么样的函数需要在实际中(运行时)决定,你可以根据条件来判断,实现用同一个表达,调用不同的函数,很是灵活. (2)利用函数指针我们可以实现委托,委托在.NEt中被发挥的淋漓尽致,但Delphi同样能实现 (3)实现回调机制 函数指针很有用啊,是高级程序员的必修。 例子
客户端调用
运行结果
D:\Projects\Delphi7\src\GofProjects\Delegate>Delegate
Func1 was called! 8 -2 http://www.cnblogs.com/fengyuwuzu1980/archive/2008/12/23/1360268.html -------------------------------------------------------------------------------------------------------------------- Pascal 中的过程类型与C语言中的函数指针相似,为了统一说法,以下称函数指针。函数指针的声明只需要参数列表;如果是函数,再加个返回值。下面讲解指向非对象(一般的)函数/过程的函数指针。 例如声明一个过程类型,该类型带一个通过引用传递的整型参数: type 这个过程类型与任何参数完全相同的例程兼容,即用它声明的变量,可以指向任何此类函数,并通过其进行函数的调用。 下面是一个兼容例程: procedure DoubleTheValue (var Value: Integer); begin Value := Value * 2; end; 函数指针能用于两种不同的目的:声明函数指针类型的变量;或者把函数指针作为参数传递给另一例程。利用上面给定的类型和过程声明,你可以写出下面的代码: var 虽然这种调用方法比直接调用麻烦了,那么我们为什么要用这种方式呢? (1)因为在某些情况下,调用什么样的函数需要在实际中(运行时)决定,你可以根据条件来判断,实现用同一个表达,调用不同的函数,很是灵活. (2)利用函数指针我们可以实现委托,委托在.NEt中被发挥的淋漓尽致,但Delphi同样能实现 (3)实现回调机制 delphi中可以通过函数指针把一个函数作为参数来传递,然后在另外一个函数中调用。 1) 首先,申明函数指针类型TFunctionParameter。 type 2) 定义准备被作为参数传递的函数 function One(const value : integer) : string; function Two(const value : integer) : string; function DynamicFunction(f : TFunctionParameter; const value : integer) : string; 4) 上面这个动态函数的使用实例 var s := DynamicFunction(Two,2006) ; --
http://anony3721.blog.163.com/blog/static/511974201071425836199/
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论