type TMyZip_AddFile=Function (SrcFile,ZipFile:pchar):integer;stdcall;var
MyZip_AddFile:TMyZip_AddFile;
LibHandle:THandle;
begin LibHandle:=LoadLibrary('MyZip.dll');
MyZip_AddFile:=GetProcAddress(LibHandle,'MyZip_AddFile');//---1
@MyZip_AddFile:=GetProcAddress(LibHandle,'MyZip_AddFile');//---2
请问1,和2之间的有区别吗?我调用下来结果是一样的,语法怎么解释,编译器为什么没有抱错,我以前用第一种方式调用DLL就抱错?
MyZip_AddFile:TMyZip_AddFile;
LibHandle:THandle;
begin LibHandle:=LoadLibrary('MyZip.dll');
MyZip_AddFile:=GetProcAddress(LibHandle,'MyZip_AddFile');//---1
@MyZip_AddFile:=GetProcAddress(LibHandle,'MyZip_AddFile');//---2
请问1,和2之间的有区别吗?我调用下来结果是一样的,语法怎么解释,编译器为什么没有抱错,我以前用第一种方式调用DLL就抱错?
解决方案 »
- sql查询语句的请教
- fastroport 组合条码问题
- 请教一个adoquery和dbgrid的问题
- 请教:我form2继承于form1,我怎样控制父窗体中控件的位置在子窗体中不能移动呢!
- 关于Session信息丢失的问题
- VB代码,有朋友帮忙转成delphi哇?很简单的,我自己转的有问题!
- ××××××××××如何改变stringgrid里某个区域字体的颜色××××××××××
- 如何在主Form出现之前,弹出密码验证From,Cancel就退出程序,Ok后密码正确才出现主Form
- 华山论剑,高手入内!
- 菜鸟我急需用Delphi控制Access数据库的方法,那位大师可以帮我一下?
- 关于打印预览的问题(100分)
- 如何在主程序退出前把其它创建的窗体都关闭掉。
var
E: TNotifyEvent; @E := Button2Click; //非法,
E := Button2Click; //合法————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
@MyZip_AddFile是什么?
@@Procedure_xxx;3.过程指针与方法指针永远都是不兼容的,也就是说不能互相赋值。
方法指针就像它的名字说的那样,它是属于某个类的。所以它的定义与一般过程不同:
比如:
type TKeyPressEvent = procedure (Sender: TObject; var Key: Char) of object;
下面考虑一个例子:
private
MyButton : TButton;
MyProcedure : TKeyPressEvent;
MyAssignProcedure;
TForm1.MyProcedure(Sender: TObject; var Key: Char) of object;
begin
...
end;
TForm1.FormCreate(Sender : TObject);
begin
MyButton := TButton.Create(Application);
with MyButton do
begin
self.Parent := self;
self.Caption := 'MyTestButton';
self.OnKeyPress:= MyProcedure; //方法指针赋值
self.SetBounds(...);
...
end;
end;
并且方法指针不止是可以传给同一窗体的组件,只要可以赋值的地方都可以实现。比如:
TForm1.AssignProcedure;
beign
with TForm2.Create(nil) do
begin
...
OnPressKey := MyProcedure; //方法指针赋值
...
ShowModal;
Free;
end;
end;