“尚未调用CoInitialize"(100分)

Z

zaoya

Unregistered / Unconfirmed
GUEST, unregistred user!
在multi-tier Application中执行Client端时,出现标题中错误
(属EOleSysError类Exception),CoInitialize是Windows Api,
请问各位大虾有何高招?
我在TMyRemoteDataModule继承的类中定义了一个函数
function CheckLogin(User_Name,Pass_word:WideString):Boolean;
(实际上是IMyInterface中继承而来)
它检查用户等录的用户名与口令,以决定是否提供各个表的Provider.
由于Users表不在TRemoteDataModule中提供,故另定义一个TDataModule,
其中有一个TDataBase与一个TQuery,TQuery的SQL为
"Select * from users where user_name=:usr andpass_word=:pwd",
然后在CheckLogin中将形参User_Name与Pass_word带入并ExecuteSQL,
检查TQuery是否为空即知返回True/False.
在Client端执行CheckLogin,并检查返回值,再决定Application是否
继续往下执行.
 
这是由于没有初始化DCOM就调用了其中的函数, 请你试着调整加载模块的顺序,
或者自己做一个单元, 其中调用这个API, 并且首先加载你的单元
 
在Delphi4中手工调用CoInitialize(nil)时出现Delphi4不认识此函数
 
Uses OLE2;
 
本人已解决问题,原因是没有Application.initialize,即没有对COM对象初始化
 
但是对于次问题,哪位高手对此有深入的研究,让小弟一开眼界?
 
我用的服务器是NT workstation,我的做法是在服务器上执行DComcfg,
为客户机设置安全级,特别是要把类似“登陆...”的选项(记不清了)
关掉,否则结果和你说的一样。你不妨先编译EmpEdit的例子试试。
 
bszhu: 你设置的权限是什么?
 
CoInitialize must be called so that inproc server dbclient.dll can be accessed.
 
CoInitialize must be called in EVERY THREAD if that thread
need call OLE/DCOM services.
 
多人接受答案了。
 
我在Corba DataMoudle上用ADO组件时也遇到了这个问题,但我不知道在什么地方
调用CoInitialize:客户端只要一连接应用服务器就会出现这个异常,跟踪也跟不到
是在什么地方激发异常的,请各位大侠指点迷津.
 

Similar threads

D
回复
0
查看
763
DelphiTeacher的专栏
D
D
回复
0
查看
681
DelphiTeacher的专栏
D
D
回复
0
查看
757
DelphiTeacher的专栏
D
S
回复
0
查看
956
SUNSTONE的Delphi笔记
S
S
回复
0
查看
779
SUNSTONE的Delphi笔记
S
顶部