各位老大们:现在有一个项目,要求使用模块方式开发,即,整个系统一个主程序和若干个模块(插件)组成,插件为DLL文件,我现在是这样做的:所有的插件(DLL)都使用一个类(A类)作为统一标准,每一个插件的实现单元都继承自(A类),然后引出该类的实例对象。现在已经实现了从插件中引出窗口等基本操作,现在的问题是:1、我要怎样做才能使插件与插件之间通讯?
2、如,一个交易需要几个插件的配合才能实现,要怎样做才能实现给每个插件传入不同的参数(可以是类型、结构、或其它变量),返回不同的结果呢(可以是任何类型的数据或是结果集等)?
下面是插件的接口标准:
interfaceuses
Classes, Windows, SysUtils;type
{* 插件状态 *}
TPluginState = (psNormal, psFree);
{* 插件信息结构 *}
TPluginInfo = packed record
Name: string; {* 插件名称 *}
Title: string; {* 插件标题 *}
Author: string; {* 作者 *}
Description: string; {* 说明 *}
end; {* 插件标准 *}
TPluginStandard = class(TObject)
private
FName: string; {* 插件文件名 *}
FVersion: string; {* 插件版本号 *}
FHandle: THandle; {* 插件句柄 *}
FState: TPluginState; {* 插件状态 *}
protected
FInfo: TPluginInfo; {* 插件信息 *}
published
property Info: TPluginInfo read FInfo;
property Name: string read FName write FName;
property Version: string read FVersion write FVersion;
property Handle: THandle read FHandle write FHandle;
property State: TPluginState read FState write FState;
public
{* 启动插件 *}
function Start(Sender: TPluginStandard): Integer; virtual; abstract;
end;
PPluginStandard = array of TPluginStandard;implementationend.请老大们帮帮忙吧!定有重谢!
2、如,一个交易需要几个插件的配合才能实现,要怎样做才能实现给每个插件传入不同的参数(可以是类型、结构、或其它变量),返回不同的结果呢(可以是任何类型的数据或是结果集等)?
下面是插件的接口标准:
interfaceuses
Classes, Windows, SysUtils;type
{* 插件状态 *}
TPluginState = (psNormal, psFree);
{* 插件信息结构 *}
TPluginInfo = packed record
Name: string; {* 插件名称 *}
Title: string; {* 插件标题 *}
Author: string; {* 作者 *}
Description: string; {* 说明 *}
end; {* 插件标准 *}
TPluginStandard = class(TObject)
private
FName: string; {* 插件文件名 *}
FVersion: string; {* 插件版本号 *}
FHandle: THandle; {* 插件句柄 *}
FState: TPluginState; {* 插件状态 *}
protected
FInfo: TPluginInfo; {* 插件信息 *}
published
property Info: TPluginInfo read FInfo;
property Name: string read FName write FName;
property Version: string read FVersion write FVersion;
property Handle: THandle read FHandle write FHandle;
property State: TPluginState read FState write FState;
public
{* 启动插件 *}
function Start(Sender: TPluginStandard): Integer; virtual; abstract;
end;
PPluginStandard = array of TPluginStandard;implementationend.请老大们帮帮忙吧!定有重谢!
解决方案 »
- 长天落日,霜降例作
- 职场潜规则
- delphi 怎么访问远程数据库,实现 注册、登录功能。
- 试试能不提问
- 动态生成计算字段
- 用控件可以打印并预览DBGridEH控件中的表格数据,但DBGrid控件中的数据应该怎样才能做到可以打印并预览?
- 用delphi自带的控件,如何打印主窗体上各种控件的内容?比如窗体上有memo,edit等
- http://www.csdn.net/expert/topic/354/354967.shtm
- 我如何的把SQL的查询结果直接写进数据库
- 如何在运行中移动任一一个控件???请看代码。
- DBchart的使用:需要用delphi实现功能类似于windows的任务管理器的cpu监控波形图
- delphi数据库相关
先给你俩索个线.
是本地通讯还是网络通讯? 本地 用内存文件方式,或者消息等等都可以,网络用UDP方便点
至于每个插件,一个插件对应一个模块
2>这个问题不明所以,没听明白.不过既然是插件,避免插件之间的配合吧!
2. 在主程序提供的接口当中增加一个类似于服务管理接口,允许各DLL安装相应的服务接口;
3. 各DLL在需要使用相应的接口时向服务管理接口查询相关服务接口,就可以完成相应的数据交换及互操作系统.