关于delphi中DLL中ADO使用和调试DLL的问题.
我的程序源码如下:
library Project1;
uses
SysUtils,
Classes,
Unit1 in 'Unit1.pas' {Form1},
Uchg in 'Uchg.pas' {FrmChg},
UData in 'UData.pas' {Data: TDataModule};
{$R *.res}
procedure MyCreate;stdcall;
begin
data:=tdata.Create(nil);
Form1:= TForm1.Create(nil);
frmchg:=tfrmchg.Create(nil);
Form1.Show;
end;
exports
MyCreate;
begin
end.
//在UData(TDataModule)中
unit UData;
interface
uses
SysUtils, Classes, DB, ADODB,Dialogs;
type
TData = class(TDataModule)
ADOQry: TADOQuery;
ADOCnn: TADOConnection;
procedure DataModuleCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
SL:TSTRINGLIST;
end;
var
Data: TData;
FileName:string;
implementation
{$R *.dfm}
procedure TData.DataModuleCreate(Sender: TObject);
var Cnn:string;
begin
FileName:=extractfilepath(paramstr(0))+'hos.ini';
if FileExists(FileName) then
begin
SL:=TSTRINGLIST.Create;
SL.LoadFromFile(FILENAME);
Cnn:=sl.Text;
try
adocnn.Connected:=false;
adocnn.ConnectionString:=Cnn;
adocnn.Connected:=true;
adocnn.LoginPrompt:=false;
except
showmessage('数据库初始化错误,无法找到数据库'+#13+#10+cnn);
end;
end;
AdoQry.Close;
adoqry.Open;
end;
END.
在调用的部分中
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs,ActiveX, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
procedure MyCreate;stdcall;external'E:\dephi\DILL\project1.dll';
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
///////////////////////////////
CoInitialize(nil); ///
///////////////////////////////
MyCreate;
end;
在我加上用斜线表出来的这一句后,在按下Button1后,就像死机一样,什么也没有,如果不用的话,调用时报错,"未调用CoInitialize",我不知道该怎么调试dll,设了断点也没用,我用的是delphi6, 请教请教。