程序片断如下,目的是加载dll,并且通过InitObjDemo引出一个对象实例,我想多次调用一下代码从而多引出几个实例,发现得到的总是同一个。也就是FList[0]和FList[1]中的是同一个对象实例。
HandleList[ObjNum-1] := 0;
HandleList[ObjNum-1] := LoadLibrary('Tools.dll');
if HandleList[ObjNum-1] <> 0 then
begin
@InitObj := GetProcAddress(HandleList[ObjNum-1], 'InitObjDemo');
if @InitObj <> nil then
begin
FList[ObjNum-1]:= InitObj;
showmessage('now objisin:FList['+inttostr(ObjNum-1)+']');
end;
result:=FList[ObjNum-1] as IUnknown;
急!请高手指导!!!
HandleList[ObjNum-1] := 0;
HandleList[ObjNum-1] := LoadLibrary('Tools.dll');
if HandleList[ObjNum-1] <> 0 then
begin
@InitObj := GetProcAddress(HandleList[ObjNum-1], 'InitObjDemo');
if @InitObj <> nil then
begin
FList[ObjNum-1]:= InitObj;
showmessage('now objisin:FList['+inttostr(ObjNum-1)+']');
end;
result:=FList[ObjNum-1] as IUnknown;
急!请高手指导!!!
解决方案 »
- delphi如何调用c++ DLL中的结构体指针 ?
- 关于串口通信中的波特率问题
- 关于设置密码
- 为什么我设置clientdataset的active为true的时候会提示这个?
- 如何在客户端程序中实现连接远程服务器?
- 刚打开窗体就把光标放在edit中,怎么实现?
- 菜烏再問﹕如何應用動態庫中的函數
- *** === Form中的事件求教 ???
- 怎么样能删除应用程序目录下产生的垃圾文件,比如*.db文件!我要整批删除而不是一个一个的删除!大虾帮忙!!给句代码!最好完整的!
- 如何在程序中指定TABLE中的FIELDS
- 问题:关于adoconnection,adoquery!
- 谢谢trainbox(rain)的热心,再给50分:)
HandleList[ObjNum-1] := 0;
HandleList[ObjNum-1] := LoadLibrary('Tools.dll');
if HandleList[ObjNum-1] <> 0 then
begin
@InitObj := GetProcAddress(HandleList[ObjNum-1], 'InitObjDemo');
if @InitObj <> nil then
begin
FList[ObjNum-1]:= InitObj;
showmessage('now objisin:FList['+inttostr(ObjNum-1)+']');
end;
result:=FList[ObjNum-1] as IUnknown;
急!请高手指导!!!
作者: Musicwind
从Dll中导出类,想必大家首先想到的是使用bpl包。这种方式有一个不好,那就是使用者必须清楚这个包中含有那些类,也就是说必须知道类的名字--这在一定意义上是个限制,试想一种情况,使用者定义了一个底层的抽象类(abstract class),然后在此基础上定义了许多应用类(concrete class),那么,对于使用者来说,他希望在不知道具体有哪些类的情况下能使用这些类--这么说似乎有些玄,但实际情况确实如此,因为定义抽象类的时候并不能预料到以后会有多少个具体类--那么这样的需求,要靠什么样的技术来实现呢? 其实实现的技术的难度并不大--作者在此将自己实践的经验献给大家,算作抛砖引玉,希望能看到其他更好的方法!
以下先介绍该方法涉及的一些基础知识,然后用一个例子来说明具体的实现。一、基本概念 元类(meta class),也叫类引用类型(class-reference type),可以看成是一种类的类型,以该类型声明的变量的值代表一个类。比如: typeTClass = Class of TObject; 这样就声明了一个元类的类型。然后可以有这样的变量声明:VarAClass: TClass; 那么,就可以有这样的用法:AClass := TObject; 或者:AClass := TButton; 或者:AClass := TForm; 等等。 因为TClass是一个TObject类型的元类,而TButton,TForm等都是自TObject派生而来,因而TButton和TForm这样的值对于AClass都是可接受的。 然后,我们就可以运用多态的思想,灵活运用AClass这个类变量了。而这一点也正是下文具体实现的基础知识。
先up
希望高手能阐述一下我碰到的问题的原因?