myamanda

博客园 首页 新随笔 联系 订阅 管理
      通常在DELPHI下我们不怎么用到指针尤其是函数的指针,但有时比如我们要实现一个回调这样的功能就需要用函数指针做为参数进行传递了。

      首先定义函数的指针类型:比如 Type TfunctionPointer=function (myParam:integer):string;

      其次定义具体函数的指针变量,比如: var tmpfunc:TfunctionPointer;

      然后定义具体的函数,注意函数的参数需要和声明的函数指针参数类型一致,才能成功调用,另外这里我们仍然要考虑类成员函数的指针与函数指针之间的差异,我 们这里是函数的指针,所以不需要巴函数声明在类的内部。比如:function funcCallOne(pOne:integer):string;   function funcCallTwo(pTwo:integer):string;

       定义好函数后,我们来看看如何通过指针调用:tmpfunc:=funcCallOne;将函数指针指向funcCallOne,然后我们就可以象使用 funcCallOne 一样的使用tmpfunc(256); 了。让我们来看看怎么实现回调吧!声明一个回调函数,让后我们用函数的指针做为参数就可以实现了,比如我们声明回调函数:

function funcCallBack MyCallBack(cbFunc:TfunctionPointer):boolean;

然后分别实现它:

function funcCallOne(pOne:integer):string

begin

            result:=inttostr(pOne*2);           

end;

function funcCallBack MyCallBack(cbFunc:TfunctionPointer):boolean

var

   i:integer;

begin

    result:=false;

     cbFunc:=funcCallOne;

     i:=1000;

     i:=i+500;

    cbFunc(i);

    result:=true;

end;

这样一来,当程序执行到    cbFunc(i); 便会回凋函数funcCallOne 了,看来也很简单,不过很有用啊!
posted on 2009-08-25 10:55  myamanda  阅读(214)  评论(0编辑  收藏  举报