J
Jack Ye
Unregistered / Unconfirmed
GUEST, unregistred user!
大家好,我是新来的,请多多赐教
我的程序是一个主窗口调用其他dll文件里面的窗口。
而DLL窗口用来实现 ado+access 数据库操作 DLL窗口中有DBGrid控件
但在 DELPHI IDE 中写程序的时候连接上了,DBGrid控件可以见到数据库内容
但编译后运行程序就见不到数据内容
请问各位大侠究竟如何才能在dll的窗口中用ado控件连接上数据库?
MainForm 清单如下:
=================================================
procedure TMainForm.BitBtn1Click(Sender: TObject);
type
Tin_frm=procedure (sender:TObject);
var
dllinstance:THandle;
PFunc:TFarProc;
begin
dllinstance:=loadlibrary('Incom.dll');
if dllinstance=0 then
begin
showmessage('找不到文件 ''Incom.DLL'' ');
exit;
end;
PFunc:=getprocaddress(dllinstance,'RunIncom');
if PFunc<>nil then
Tin_frm(PFunc)(MainForm)
else
showmessage('找不到输出函数');
freelibrary(dllinstance);
end;
===================================================
incom.dll 清单如下:
===================================================
uses
SysUtils,
Classes,
Forms,
in_form in 'in_form.pas' {in_frm},
{$R *.res}
function RunIncom:integer;stdcall;
var
in_frm:Tin_frm;
begin
in_frm:=Tin_frm.Create(Application);
Result:=in_frm.ShowModal;
in_frm.Free;
end;
exports
RunIncom;
====================================================
如果直接在 dll的 in_frm窗口中直接加入ado控件会出现
"Exception EOleSysError in module Incomm.dll at 0006F0F5"
的错误。
如果用datamodule组件,并在in_frm窗口的OnCreate事件中加入:
=====================================================
implementation
uses datamodule;
{$R *.dfm}
procedure Tin_frm.FormCreate(Sender: TObject);
var
datamodule1:Tdatamodule1;
begin
datamodule1:=Tdatamodule1.Create(application);
end;
=====================================================
则出现“尚未调用 Coinitialize” 的错误。
我的程序是一个主窗口调用其他dll文件里面的窗口。
而DLL窗口用来实现 ado+access 数据库操作 DLL窗口中有DBGrid控件
但在 DELPHI IDE 中写程序的时候连接上了,DBGrid控件可以见到数据库内容
但编译后运行程序就见不到数据内容
请问各位大侠究竟如何才能在dll的窗口中用ado控件连接上数据库?
MainForm 清单如下:
=================================================
procedure TMainForm.BitBtn1Click(Sender: TObject);
type
Tin_frm=procedure (sender:TObject);
var
dllinstance:THandle;
PFunc:TFarProc;
begin
dllinstance:=loadlibrary('Incom.dll');
if dllinstance=0 then
begin
showmessage('找不到文件 ''Incom.DLL'' ');
exit;
end;
PFunc:=getprocaddress(dllinstance,'RunIncom');
if PFunc<>nil then
Tin_frm(PFunc)(MainForm)
else
showmessage('找不到输出函数');
freelibrary(dllinstance);
end;
===================================================
incom.dll 清单如下:
===================================================
uses
SysUtils,
Classes,
Forms,
in_form in 'in_form.pas' {in_frm},
{$R *.res}
function RunIncom:integer;stdcall;
var
in_frm:Tin_frm;
begin
in_frm:=Tin_frm.Create(Application);
Result:=in_frm.ShowModal;
in_frm.Free;
end;
exports
RunIncom;
====================================================
如果直接在 dll的 in_frm窗口中直接加入ado控件会出现
"Exception EOleSysError in module Incomm.dll at 0006F0F5"
的错误。
如果用datamodule组件,并在in_frm窗口的OnCreate事件中加入:
=====================================================
implementation
uses datamodule;
{$R *.dfm}
procedure Tin_frm.FormCreate(Sender: TObject);
var
datamodule1:Tdatamodule1;
begin
datamodule1:=Tdatamodule1.Create(application);
end;
=====================================================
则出现“尚未调用 Coinitialize” 的错误。