L
laobeli
Unregistered / Unconfirmed
GUEST, unregistred user!
主程序由若干模块组成,每个模块是一个DLL。Socket的连接方案有如下方案1:主程序和模块分别有独立的SocketConnection控件,模块(Dll)中访问中间层服务器方便,可是多Socket就相当于多个连接(多个RDM实例),效率不知道会不会有影响。方案2:主程序有一个SocketConnection,各模块共用主程序的Socket,但是传递问题挺麻烦,看有人直接在Dll中传递TSocketConnection对象,function ShowForm(appHandle: THandle; aSckt: TSocketConnection): HResult; 不知道这样处理方式怎样,总是感觉直接传递挺危险,不少人都不建议这么干。方案1我是不看好,方案2也不太好,不知道能不能不采用直接传递对象的方式,传个指针或Handle什么的,可 TSocketConnection没Handle。另外我的模块(DLL)中输出的是对象接口:Dll中输出接口function GetPlugins: IPlugins;begin Result := TPlugins.Create;end;TPlugins类如下: TPlugins = class(TInterfacedObject, IPlugins) public constructor Create; destructor Destroy; override; //显示窗体 function ShowForm(AppHandle, ParentHandle: THandle; aHost, aSGUID: PChar; aPort: Integer): HRESULT; //显示名称 function GetCaption: PChar; //编号 function GetID: Integer; //释放窗体 procedure CloseForm; end;或者也可以主程序回调传递数据库信息,请大家帮忙分析下。