函数指针问题

kgliu 2003-12-12 10:52:19
问题未解决,重发一遍,望各位不吝赐教

有一系列函数:fa,fb,fc.....fn.
假设param从a,b,c....n中取值,任意给定一个param值,怎样找到它对应的函数fparam?不用循环。
面向对象的多态性好象说明了这个问题,是不是我也不确定,很久没与这方面打过交道了。
请大家指教指教。
...全文
22 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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.

————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————

5,927

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧