想实现动态调用过程,比如
type
TForm1 = class(TForm)
...
private
procedure x;
public
end;
var
Form1: TForm1;implementation{$R *.DFM}
procedure TForm1.x;
begin
...
end;
end.
我在此单元中通过何种方式能够根据指定字符串‘x’调用过程x呢?
请高手指点,多谢!
type
TForm1 = class(TForm)
...
private
procedure x;
public
end;
var
Form1: TForm1;implementation{$R *.DFM}
procedure TForm1.x;
begin
...
end;
end.
我在此单元中通过何种方式能够根据指定字符串‘x’调用过程x呢?
请高手指点,多谢!
解决方案 »
- 有个3MB的数组,int64的. 放数据库/txt还是直接用数组呢?
- DELPHI记录集结构以流的方式文字+图片写入自定义库
- 问题咨询
- 下载论坛页面, 需要cookie认证, 请问怎样把cookie加进去?
- 大家一起来谈谈在网上找工作的感想!!
- 退出窗口后的释放问题
- 一个自定义函数问题!
- 关于第6期程序员杂质上vb专家门诊中“如何由汉字获取拼音”一文中程序是否有误,我试了几次也不行!请高手指点!急!
- 使用UniDac读取Sqlite3存储在Text字段类型内的二进制数据出错
- ADO的SQL语句Create Table Test.dbf 产生数值字段的疑问?
- 散分,以保证本人的可用分可以被10整除
- ****************各位大哥哥大姐姐,快帮小妹一把啊,我快急哭了,呜呜呜呜呜呜********************
procedure Exec(strFunName: string);
begin
if strFunName = 'X' then
x
else if strFunName = 'Y' then
y
else ....
end;
type
TProcOfObject = procedure of object;
var
Method: TMethod;
begin
Method.Code := Obj.MethodAddress(MethodName);
if Method.Code = nil then
raise Exception.Create('Method "'+MethodName+'" doesn''t exist or
isn''t published')
else
begin
Method.Data := TObject;
TProcOfObject(Method);
end;
end;
To do what you want to do just callCallMethodByName(Form1, 'mytest');
多谢关注,“将对象、函数地址、函数类型、调用名称按工作需要注册到一个自定义列表即可。”不是很明白,自定义列表是什么形式的,可否详细说一下,最好举个例子。To All:
提到我的方案中存在编译器的依赖性问题,我很想详细了解问题出在哪里,或查阅何种资料。希望各位大侠能给更详细的描述,多谢!