两个程序 A EXE
B Dll
EXE调用DllEXE程序中定义了过程function Sql_Open(sSQL: string; myQuery: TClientDataSet = nil;
ShowErrMsg: Boolean = True; FixMsg : string = ''): TClientDataSet;dll中需要回调Sql_Open
=============================================================================================
具体代码如下------com接口中这样写的
unit uUfInFc;{$WARN SYMBOL_PLATFORM OFF}interfaceuses
Sysutils, ComObj, ActiveX, UfInFc_TLB, StdVcl, Classes, DBClient, Forms;type
TSql_Open = function (sSQL: string; myQuery: TClientDataSet = nil;
ShowErrMsg: Boolean = True; FixMsg : string = ''): TClientDataSet of object; TTUfInFc = class(TAutoObject, ITUfInFc)
public
FSql_Open: TSql_Open;
protected
procedure MakeVouCh; safecall;
end;-------------调用是这样写的
Try
FUFInFcCOM := GetActiveOleObject('UFInFc.TUFInFc');
except
try
FUFInFcCOM := CreateOleObject('UFInFc.TUFInFc');
FUFInFcCOM.FSql_Open:= Sql_Open;
FUFInFcCOM.MakeVouCh;
except
Application.MessageBox('无法获取[email protected]',App_caption,mb_ok+MB_ICONINFORMATION);
end;
end;==================问题如下
com接口中如何回调EXE的Sql_Open
B Dll
EXE调用DllEXE程序中定义了过程function Sql_Open(sSQL: string; myQuery: TClientDataSet = nil;
ShowErrMsg: Boolean = True; FixMsg : string = ''): TClientDataSet;dll中需要回调Sql_Open
=============================================================================================
具体代码如下------com接口中这样写的
unit uUfInFc;{$WARN SYMBOL_PLATFORM OFF}interfaceuses
Sysutils, ComObj, ActiveX, UfInFc_TLB, StdVcl, Classes, DBClient, Forms;type
TSql_Open = function (sSQL: string; myQuery: TClientDataSet = nil;
ShowErrMsg: Boolean = True; FixMsg : string = ''): TClientDataSet of object; TTUfInFc = class(TAutoObject, ITUfInFc)
public
FSql_Open: TSql_Open;
protected
procedure MakeVouCh; safecall;
end;-------------调用是这样写的
Try
FUFInFcCOM := GetActiveOleObject('UFInFc.TUFInFc');
except
try
FUFInFcCOM := CreateOleObject('UFInFc.TUFInFc');
FUFInFcCOM.FSql_Open:= Sql_Open;
FUFInFcCOM.MakeVouCh;
except
Application.MessageBox('无法获取[email protected]',App_caption,mb_ok+MB_ICONINFORMATION);
end;
end;==================问题如下
com接口中如何回调EXE的Sql_Open
解决方案 »
- 我觉得embarcadero翻译成"阴巴可得肉"更加符合读音,不知道大家觉得泥?
- 请大伙介绍几本 Delphi 图像编程方面的书, 先谢谢了^_^
- 不解,前途迷茫
- 可不可以取得窗体边框的消息。就是说当鼠标移到窗体边框时会触发什么事件。
- 明天要面试了,大家帮帮我。
- 有请进行过IC卡软件开发的大侠
- 请教: 如何获得BDE datasource 的驱动类型(用过BDE API 的尤其请进)
- 请教
- 如何写一个统计数据在其它表但两表有关联的统计SQL语句?
- 怎样用虚拟键盘输入中文啊!!!DELPHI高手有知道的么????
- 【关于多线程访问控件问题】
- [delphi]class var、class procedure与var、procedure有何区别?
你这里赋值了, 那边就可以调用啊
-----------
FUFInFcCOM.FSql_Open:= Sql_Open;
这句提示不有足够的参数
TSql_Open = function (sSQL: string; myQuery: TClientDataSet = nil;
ShowErrMsg: Boolean = True; FixMsg : string = ''): TClientDataSet of object;of object; 这个是不需要的。
TSql_Open = function (sSQL: string; myQuery: TClientDataSet = nil;
ShowErrMsg: Boolean = True; FixMsg : string = ''): TClientDataSet;