各位GG帮帮忙吧,一个关于Dll的调用???(200分)

  • 主题发起人 主题发起人 otqsoft
  • 开始时间 开始时间
O

otqsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
我在作一个管理系统,其中查询的要生成一个Dll文件,可是调用时总会出错[出现的好像是地址错误],而EXE里执行是没有问题的,请各位大侠帮我看看吧。。。不盛感激,在此先谢过了。。。。
接口函数如下:
function DllFindInterFace(var tmpADO: TADOConnection; tmpNo,tmpName,tmpTable,tmpCaption: pchar): TForm;
begin
ADOCONN:= tmpADO;
FindUserID:= string(tmpNo);
FindUserName:= string(tmpName);
TableName:= string(tmpTable);
TitCaption:= string(tmpCaption);
try
if not Assigned(frmFindMain) then
begin
Application.CreateForm(TfrmFindMain, frmFindMain);
Application.ProcessMessages;
end;
frmFindMain.Caption:= frmFindMain.Caption + ' -- ' + string(tmpCaption);
LoadInterFace(frmFindMain);
frmFindMain.GetFindInfo(TitCaption);
frmFindMain.Show;
Result:= frmFindMain;
except
on E: Exception do
begin
WriteLog('UfindInterFace -> DllFindInterFace -> 查询窗体初始化加载失败!'+ e.Message);
if Assigned(frmFindMain) then
begin
frmFindMain.Close;
frmFindMain:= nil;
end;
end;
end;
end;
窗体frmFindMain的Create事件如下:
procedure TfrmFindMain.FormCreate(Sender: TObject);
begin
ADOQuery.Connection:= ADOCONN;
ADOChart.Connection:= ADOCONN;
PanelSet.Color:= LoadInterFace(frmFindMain);
Grid:= TExampleDBGrid.Create(nil);
Grid.ADOLink:= ADOCONN;
Grid.UserID:= UserID;
Grid.UserName:= UserName;
Grid.DBGrid:= DBGrid;
Grid.RMReport:= RMReport1;
Grid.RMDBDataSet:= RMDBDataSet1;
Grid.RMDesigner:= RMDesigner1;
Grid.TableName:= TableName;
Grid.TitleCaption:= TitCaption;
Grid.FindFlag:= True;
FindSql:= Grid.FormatDBGrid(True,True);
Application.ProcessMessages;
end;
当程序执行到 ADOQuery.Connection:= ADOCONN;就错了 而ADOCONN是我定义的一个公共变量。LoadInterFace,TExampleDBGrid是我自己定义的函数和自己封装的类,单独执行都没有问题。
 
是在dll里封装那个查询窗体frmFindMain么?如果是的话,得注意application的传递问题。
 
不要传递对象到DLL中......
 
这种情况我也碰到过.我写一个运行sql的函数封装到dll,调用时总是报错..其他的就没问题,后面我干脆写到delphi里了
 
我主控台里调用,采用的链表管理,动态调用的!和基础信息的DLL调用方法基本一样,
可是传到DLL里面,ADO好像是Nil的,而其它的匀可以的,不知道为什么。。。
 
谢谢大家的支持,我找到问题了!原来往Dll里的参数,顺序给弄错了,呵呵,不好意思[:)]
 
后退
顶部