社区
Delphi
帖子详情
函数指针问题
kgliu
2003-12-12 10:52:19
问题未解决,重发一遍,望各位不吝赐教
有一系列函数:fa,fb,fc.....fn.
假设param从a,b,c....n中取值,任意给定一个param值,怎样找到它对应的函数fparam?不用循环。
面向对象的多态性好象说明了这个问题,是不是我也不确定,很久没与这方面打过交道了。
请大家指教指教。
...全文
36
3
打赏
收藏
函数指针问题
问题未解决,重发一遍,望各位不吝赐教 有一系列函数:fa,fb,fc.....fn. 假设param从a,b,c....n中取值,任意给定一个param值,怎样找到它对应的函数fparam?不用循环。 面向对象的多态性好象说明了这个问题,是不是我也不确定,很久没与这方面打过交道了。 请大家指教指教。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kgliu
2003-12-15
打赏
举报
回复
谢谢二位的解答。
很土
2003-12-13
打赏
举报
回复
可以构造 Hash 函数, 建立 Hash Table, 若函数构造合理的话可以一次就找到目标, 所以解决方法的关键是如何互斥, 根据下标就可以计算出目标值.
lxpbuaa
2003-12-12
打赏
举报
回复
如果这一系列函数的参数是相同的,则可以,否则不能。比如:
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TProc = procedure(X: Integer); //定义下列一些函数/过程的类型TProc
procedure fa(a: Integer); //一系列函数/过程
procedure fb(b: Integer);
var
Form1: TForm1;
implementation
var
Procs: Array of TProc; //一个数组存放这一些函数的指针
{$R *.dfm}
procedure fa(a: Integer);
begin
ShowMessage(IntToStr(a));
end;
procedure fb(b: Integer);
begin
ShowMessage(IntToStr(b));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//初始化指针数组
SetLength(Procs, 2);
Procs[0] := fa;
Procs[1] := fb;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
param: Integer;
begin
//通过param调用响应的函数/过程
param := 0;
Procs[param](param);
end;
end.
————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
Delphi
5,933
社区成员
262,941
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章