To cAkk:
用MethodAddress函数可得到函数入口地址,但是参数值传不进去,请问会是
什么原因?我的测试程序如下:
unit test1;
interface
type
TTestAddr = Class(TObject)
published
function AddIt(ii : integer):integer;
end;
implementation
function TTestAddr.Addit(ii:integer):integer;
begin
result := ii + 1;
end;
end.
unit test2;
interface
type
mf = function(ii:integer):integer;
form1 = Class(TForm)
Button1 : TButton;
procedure Button1Click(sender : TObject);
end;
implementation
uses test1;
{$R *.dfm}
procedure Button1Click(sender : tobject);
var pp : pointer;
ff : mf;
tt : TTestAddr;
nn : integer;
begin
tt := TTestAddr.Create;
pp = tt.MethodAddress('AddIt');
if pp = nil then
button1.caption := 'hello error'
else
begin
ff := mf(pp);
nn := ff(12)
{结果nn不等于13,什么地方有错呢?
跟踪进AddIt,发现传进去的参数值不是12了}
button1.caption := 'hello'+inttostr(ii);
end;
tt.free;
end;
end.
TObject类,利用RTTI,可实现根据函数名字获得其入口地址.
那么,一般的全局函数是否有办法根据名字获得其入口地址?
请cAkk及各位高手多帮助.谢谢!!!