首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

这种情况上,该如何做

2013-01-05 
这种情况下,该怎么做?我有很多个函数,函数命名很有规律,如func1,func2,func3........现在我想依据某个参

这种情况下,该怎么做?
我有很多个函数,函数命名很有规律,如func1,func2,func3........;现在我想依据某个参数,分别调用不同的函数,比如传入1,就调用func1,传入2就调用func2,  代码如下:
procedure DO(i:integer)
begin
  case i of
    1:func1;
    2:func2;
    3:func3;
    .........
end;

如果func函数很多的话,,case就要把i的值统统都罗列出来,有没有比较简洁的方法?
[解决办法]
建数组

procedure x1;
begin
  ShowMessage('1');
end;

procedure x2;
begin
  ShowMessage('2');
end;

var
  x: array [0..1] of procedure = (x1,x2);

procedure DO(i:integer)
begin
  x[i];
end;

越界问题自己判断。
[解决办法]
procedure fun1;
begin
  showmessage('1');
end;

procedure fun2;
begin
  showmessage('2');
end;

procedure fun3;
begin
  showmessage('3');
end;

var
  l: TList;

procedure DOIt(i:integer);
begin
  TProcedure(l[i-1])
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  l:=TList.Create;
  l.Add(@fun1);
  l.Add(@fun2);
  l.Add(@fun3);

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  l.Free;
end;

procedure TForm1.FormClick(Sender: TObject);
begin
  DoIt(2);
end;

[解决办法]
楼上两位都是牛人,学习了!
[解决办法]
在 case??of 中直接执行就好了, 莫非在case中无法完成的事??
[解决办法]
向两位牛人学习,增见识了
[解决办法]
通过这种方法调用的方法数量不多的话   1,2楼的方法就行

如果数量多可以写个通用函数:
  通过rtti单元获取方法列表, 通过与输入字符匹配获得适用的方法

热点排行