我在DLL中放置ADOTable控件,外部调用时出现"EOleSysError 标记没有引用存储"????????(200分)

  • 主题发起人 主题发起人 XYong
  • 开始时间 开始时间
X

XYong

Unregistered / Unconfirmed
GUEST, unregistred user!
我在DLL中放置ADOTable控件,外部调用时出现"EOleSysError 标记没有引用存储"????????
 
Dll中封装的Form上放的AdoTable还是动态生成的?
怎么调用的?
说清楚写!
 
怎么没有回应?
这样试试好了。假设你是调用dll中封装的Form。
在调用dll form的application中,调用之前加一句试试!
调用程序:
procedure ShowMyFrm(Handle: THandle);stdcall; external 'project1.dll';
。。。。。
procedure TForm1.Button1Click(Sender: TObject);
begin
Application.Initialize;
showmyFrm(Application.Handle);
end;

dll中的倒出函数:
procedure ShowMyFrm(AHandle: THandle);
var
MyFrm: TForm1;
begin
Application.Handle := AHandle;
MyFrm := TForm1.Create(nil);
try
MyFrm.ShowModal;
finally
MyFrm.Free;
end;
end;
 
我在DLL中激活DCOMConnection也遇到同样问题
 
是不是需要动态加载,而不是静态链接
 
我认为他的问题在这句上
procedure TForm1.Button1Click(Sender: TObject);
begin
Application.Initialize;/*******************/
showmyFrm(Application.Handle);
end;

 
这事我刚巧解决了,很简单,把ADO空间(主要是TADOConnection需要) 放在TDataModule
上,之后动态创建 DATAMODULE就行
 
是使用new 方法还是使用Application.CreateForm(...)
 
我是在Form上放的AdoTable的,但如果放上的上BDETable就没问题
 
我的方法试了没有?
 
谢谢大家,其实不关是否传应用程序主窗体句柄问题,是外部环境的调用问题,只要在外部
添加ADO的引用,用初始COM就OK!
 
后退
顶部