| ================================
library ZcLXFlt;
// *************************************************
// AppName : 连型过滤插件
// Version : 1.0.1
// Company : bittime
// Author : bit
// Description: 连型过滤插件
// CreateDate : 2003-07-16
// ******************************************************//
uses
SysUtils,
Classes,
Windows,
LianXingFltForm in 'LianXingFltForm.pas' {frmLianXingFlt};
/////////////////////////////////////////////////////////
{$R *.res}
/////////////////////////////////////////////////////////
var
FFilterStr: string; //过滤条件字符串
ssMyFilter: TStrings; //过滤条件变量
//////////////////////////////////////////////////////////
// DLL入口函数
// 用户可在该函数中对过滤插件进行初始化处理以及资源释放处理
procedure DLLEntryPoint(dwReason: DWORD);
begin
case dwReason of
DLL_PROCESS_ATTACH: //DLL启动
begin
ssMyFilter := TStringList.Create;
end;
DLL_PROCESS_DETACH: //DLL退出
begin
ssMyFilter.Free;
end;
end;
end;
///////////////////////////////////////////////////////
// 过滤插件信息函数
{ ===================================================
Function : 获取过滤插件的名称
Result : 过滤插件的名称, 该名称应该不与现有的过滤模块同名
========================================================}
function GetFilterName(): PChar; stdcall;
begin
Result := '连型过滤';
end;
{ ======================================================
Function : 获取过滤插件的版本信息
Result : 过滤插件的版本信息
========================================================}
function GetVersion(): PChar; stdcall;
begin
Result := '1.0.1';
end;
{ ====================================================
Function : 获取过滤插件的作者信息
Result : 过滤插件的作者信息
=================================================}
function GetAuthor(): PChar; stdcall;
begin
Result := '北京盈彩畅联网络科技有限公司';
end;
/////////////////////////////////////////////
// 过滤操作相关函数
{ =================================================
Function : 获取过滤插件的过滤条件字符串
Result : 过滤条件字符串
======================================================}
function GetFilterStr(): PChar; stdcall;
begin
Result := PChar(FFilterStr);
end;
{ ==================================================
Function : 设置过滤插件的过滤条件字符串
Arguments: 过滤条件字符串
==================================================}
procedure SetFilterStr(sFilterStr: PChar); stdcall;
begin
FFilterStr := sFilterStr;
end;
{ ==============================================
Function : 执行过滤操作,该函数为过滤插件的核心函数,必须实现
Arguments: AChip-要进行过滤的一个单式投注,如:3313011301303
Result : 给定的单式投注不符合的过滤条件个数(即应被过滤的次数)
如单式投注符合所有过滤条件(即应保留)则返回0
================================================}
function ZcExecute(AChip: PChar): integer; stdcall;
var
sTemp: string;
begin
Result := 0;
sTemp := GetLianXing(AChip);
if ssMyFilter.IndexOf(sTemp) >= 0 then
begin
Result := 1;
end;
end;
{ ============================================
Function : 过滤校验
Arguments: AChip-要进行过滤的一个单式投注,如:3313011301303
Result : 给定的单式投注的过滤校验信息,没条信息间以回车换行(#13#10)
符分隔,如单式投注符合所有过滤条件(即应保留)则返回空
==============================================}
function ZcDebug(AChip: PChar): PChar; stdcall;
var
sTemp: string;
begin
Result := '';
sTemp := GetLianXing(AChip);
if ssMyFilter.IndexOf(sTemp) >= 0 then
begin
sTemp := AChip + #7 + GetFilterName + #7
+ sTemp + #7 + sTemp + #13#10;
Result := PChar(sTemp);
end;
end;
{ =====================================
Function : 打开过滤条件设置窗口。
Arguments: no
Result : no
note : 必须在用户确认后及时刷新FFilterStr值
===================================================}
function ZcOpen(hApp: Integer = 0): boolean; stdcall;
var
hOldApp: integer;
frm: TfrmLianXingFlt;
begin
hOldApp := Application.Handle;
Application.Handle := hApp;
frm := TfrmLianXingFlt.Create(nil);
frm.SetFilter(FFilterStr);
frm.ShowModal;
if not frm.bCancel then
FFilterStr := frm.GetFilter;
frm.Free;
Application.Handle := hOldApp;
Result := true;
end;
{ ================================================
Function : 过滤准备函数,在该函数中可执行过滤条件的优化处理以及过滤
条件的有效性检验
Result : 如过滤条件格式设置正确则返回true,否则返回false
==================================================}
function ZcPrepare(): boolean; stdcall;
begin
ssMyFilter.Text := StringReplace(FFilterStr, ';', #13#10, [rfReplaceAll]);
Result := true;
end;
///////////////////////////////////////////////
// DLL对外接口函数
exports
ZcExecute, //过滤处理
ZcDebug,
ZcOpen,
ZcPrepare,
GetFilterStr,
SetFilterStr,
GetFilterName, //获取过滤插件的信息
GetVersion,
GetAuthor
;
////////////////////////////////////////////
begin
DLLProc := @DLLEntryPoint;
DLLEntryPoint(DLL_PROCESS_ATTACH);
end. |