关于DLL的几个问题(80分)

  • 主题发起人 主题发起人 suninrain
  • 开始时间 开始时间
S

suninrain

Unregistered / Unconfirmed
GUEST, unregistred user!
我想做一个C/S系统,该系统客户端由两部分组成,一个DLL库文件,用于存放各个窗口单元,包括主界面,和主界面要调用的窗口、函数等;一个EXE程序用来登陆主程序,并在EXE启动是连接数据库,检查DLL是否有更新,如有更新,则下载更新之,如没有,则调出DLL中的程序主界面,并将登陆信息传送给住界面,现有如下问题不明白,请大家帮忙解决:
1:调用DLL用动态连接还是静态连接?各自的连接方式是什么(有源码),各有什么优缺点,两种方式对我更新DLL有何影响?(20分);
2:如何将EXE取得的登陆信息传送给由DLL中调用出来的主界面,甚至主界面调用的各个子窗口(有源码)(10分);
3:现在我可以调出主界面,但主界面菜单或按钮如何调出子界面呢(有源码)(20分)
4、对我使用这种方式,大家还有什么别的好的提议或者意见呢?或者还有我没有想到的需要注意的问题呢,希望大家多多参与!(30分)
 
还是自己去下载<<Delphi5开发人员指南>>这本书看一下吧,里面第9章对你的这些问题说
得很清楚。很多地方下载得到,用Google搜一下。
 
动态调用比较好,
通过接口函数把Exe信息传到DLL
DLL调DLL
自已申请得资源退出前要释放,不然会出错
 
DLL不适用于数据库连接程序的,李维曾这么说过,似乎是因为不能共享一个数据库联接,那样的话,通常意义上,如果你的程序有十个窗口都是共用一个数据模块中的数据连接,而采用DLL的话,会变成十个窗口分别用数据模块的十个不同实例了,而李维的推荐是采用DELPHI的BPL形式,他能很好的实现共用数据连接的这个问题。
 
呵呵,同意楼上,我就是这么做的
 
to app2001,maze78:请详细说明DELPHI的BPL形式为何,或者在那里可以找到它的详细资料?
 
http://www.sinter.com.tw/borland/jbuilder/TogetherSoft-1.pdf
如何使用Delphi 開發大型主從架構系統.doc
 
我也是这样子,在将窗口做到DLL中后,发现无法共享一个DataModule,不知如何是好!

还望高手赐教!
 
多人接受答案了。
 
to app2001:DLL不适用于数据库连接程序的,李维曾这么说过,似乎是因为不能共享一个数据库联接,那样的话,通常意义上,如果你的程序有十个窗口都是共用一个数据模块中的数据连接,而采用DLL的话,会变成十个窗口分别用数据模块的十个不同实例了,而李维的推荐是采用DELPHI的BPL形式,他能很好的实现共用数据连接的这个问题。
---------------------------------------------------------------
我用如下的方式:
在DLL中用如下的函数定义
function showform1(AHandle:THandle;adocon:tadoconnection):integer;stdcall;
var
form:TForm1;
begin
Application.Handle := AHandle;
form:=tform1.Create(application);
try
form.adoquery1.connection :=adocon;//将form上的adoquery的connection属性赋值
result:=form.ShowModal ;
finally
form.free;
end;
end;

那么,在EXE程序里象如下这样调用DLL中的窗体
showform1(application.handle,adoconnection1);
调用窗体后,我在窗体上执行SQL语句,都能通过,那我这种共享数据连接的方式算不算共享了一个数据连接呢,如果算,那用DLL方式,还有什么别的要注意的地方呢?
 
具体你看一下上面我链接中的那篇文档好,人家都说得很好的
 
app2001兄:你给我的连接好象是关于‘MODELING和开发工具的完美结合’的,好象并未涉及到我所说的问题啊
 
哦哦,补过,补过,真奇怪,同样的文件名的呀
到这来看吧,这回是真的了
http://www2.borland.com.tw/tw/reference9.html
 
谢谢,非常感谢!
 
后退
顶部