======================================================
注:本文源代码点此下载
======================================================
通常在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 了,看来也很简单,不过很有用啊!
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/