1 前言
2 插件框架(untDllManager)
3 使用举例
3.1 类图
3.2 客户端组件
从TDll派生出TClientDll;
根据真实的动态库接口添加相关属性;
3.2.1 组件定义
unit untClientDll;
interface
uses
Windows, Classes, SysUtils, untDllManager, untProcDefine;
type
EClientDllError = Class(Exception);
{ TClientDll
o 继承自 TDll;
o 自动获取 ClientInitialize 地址并保存在 ClientInitialize 属性中;
o 自动获取 ClientInsertTrigger 地址并保存在 ClientInsertTrigger 属性中;
}
TClientDll = Class(TDll)
private
FClientInitialize: TClientInitialize;
FClientInsertTrigger: TClientInsertTrigger;
FClientGetDescription: TClientGetDescription;
FClientSetup: TClientSetup;
FDescription: String;
FUseTrigger: Bool;
protected
procedure DoDllLoaded; override;
procedure DoDllUnLoaded; override;
public
constructor Create; override;
property ClientGetDescription: TClientGetDescription read FClientGetDescription;
property ClientInitialize: TClientInitialize read FClientInitialize;
property ClientInsertTrigger: TClientInsertTrigger read FClientInsertTrigger;
property ClientSetup: TClientSetup read FClientSetup;
property Description: String read FDescription write FDescription;
property UseTrigger: Bool read FUseTrigger write FUseTrigger;
end;
implementation
{ TClientDll }
constructor TClientDll.Create;
begin
inherited;
FClientInitialize := nil;
FClientInsertTrigger := nil;
FClientGetDescription := nil;
FClientSetup := nil;
end;
procedure TClientDll.DoDllLoaded;
begin
FClientInitialize := GetProcAddress(csClientInitialize);
if not Assigned(FClientInitialize) then
raise EClientDllError.Create(''''No found of Proc "ClientInitialize".'''');
FClientInsertTrigger := GetProcAddress(csClientInsertTrigger);
if not Assigned(FClientInsertTrigger) then
[1] [2] [3] 下一页 [系统软件]InstallShield Express for delphi制作安装程序定… [系统软件](转帖) 忘记登录密码的解决方案 for XP/2003/2000 [系统软件]交叉编译sshd for IXP425 ARM Platform by MVL 3… [常用软件]InstallShield Express制作Delphi数据库安装程序 [Delphi程序]为什么选择Delphi.Net ? [Delphi程序]《关于VisiBroker For Delphi的使用》(4) [Delphi程序]Delphi 程序员代码编写标准指南 [Delphi程序]转贴:Conversion to Delphi 6: Missing unit Pro… [Delphi程序]Borland Delphi 9 的新特性 [Delphi程序]Delphi 键盘码表
|