最近用到了一个稍微高级一点儿的内容,就是在代码中动态调用事件方法,或者说是函数指针,由于Delphi的特殊性,所以,直接上代码吧:
procedure TForm1.Button2Click(Sender: TObject);
var
f, f1: TNotifyEvent;
d: NativeUInt;
pm, pm1: ^TMethod;
begin
New(pm);
try
f := Button1Click;
pm.Code := TMethod(f).Code;
pm.Data := TMethod(f).Data;
d := NativeUInt(pm);
pm1 := Ptr(d);
if pm1 <> nil then
begin
TMethod(f1).Code := pm1.Code;
TMethod(f1).Data := pm1.Data;
f1(nil);
end;
finally
Dispose(pm);
end;
end;
逻辑很清晰,功能也是一目了然的。当然,上面只是做个演示,具体到实际应用中的代码,还是需要根据实际情况做一些修改的。
最后,有空的同学可以看看我写的Web服务器。
http://www.moonserver.cn/mhs/single-post.pp?id=68&catalog=1