我有很多个函数,函数命名很有规律,如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 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;
越界问题自己判断。
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;
通过rtti单元获取方法列表, 通过与输入字符匹配获得适用的方法