如何将具有 属性 的类封装在 dll中,然后主程序可以调用dll文件中这个属性。(100分)

  • 主题发起人 主题发起人 xiepan
  • 开始时间 开始时间
X

xiepan

Unregistered / Unconfirmed
GUEST, unregistred user!
如何将具有 属性 的类封装在 dll中,然后主程序可以调用dll文件中这个属性。
 
呵呵,只要你在DLL中定一个函数,返回值为这个类实例,然后发布这个函数即可了。
在调用端找到定议的函数进行调用就可以得到了DLL中的类实例了,然后你就可以操纵那个类实例了。
 
呵呵,只要你在DLL中定一个函数,返回值为这个类实例,然后发布这个函数即可了。
==========================================================================
改一下=>只要你在DLL中定一个函数,返回值为这个类实例中你要用的那个属性,然后发布这个函数即可了
 
那如果这个 类 是一个公共类,在程序的其他地方也要调用,那么以后升级就不方便啊,要把所有用到这个类的 程序都重新编译啊。我是想在做成这样的效果:
1、如果公共类这个dll修改了,只要升级公共类这个dll,而不修改重新编译其他的程序。
 
有点麻烦,我总结的步骤如下:
(说明:越来越多接触到面向对象之后,包括C#,Java以及Delphi3后的版本引用了Interface,发现接口的概念逐渐由抽象的意义转为具体的实现,所以我总结的方法使用接口来完成楼主想要的功能。这样有个好处是可以实现界面和业务的分离,便于多人同时完成一个项目的各个模块)
1.用一个单元定义一个接口(Interface),DLL和EXE中都包含这个接口的单元;
2.DLL中用另一个单元定义一个类,来实现这个接口,类一般从TInterfacedObject继承
3.在DLL中用一个全局的函数引出这个接口,比如
function GetMemberInterface: IMember
stdcall;
begin
Result := TMember.Create;
end;
4.在EXE中引用DLL,比如
function GetMemberInterface
external 'YourDll.dll' name 'GetMemberInterface';
5.在EXE中定义一个接口,就可以使用了
比如定义FInterface: IMember;
按照下面方法使用
FInterface := GetMemberInterface;
 
这个方法我使用了,但是在接口定义中不能定义属性啊!但是我在类的定义中定义了属性啊!
你有QQ吗?我们QQ聊,我的QQ是273007784。
 
接口定义中不能定义属性吗?
接口中可以包括属性,方法,但不能包括数据成员(域)
所以接口中的属性只能由方法来实现,比如如下的定义
IMyInterface = interface
['{5A01F7A4-7399-4111-B4C7-1C3D909ED3A6}']
function GetValue: Integer;
procedure SetValue(Value: Integer);
property Value: Integer read GetValue write SetValue;
end;
 
接口是正解:)
 
方法一定有很多
还可以根据输入的参数,动态输出返回值
 
to Resume
可以给出一个如何根据输入的参数,动态的输出返回值的例子吗?谢谢。
 
后退
顶部