请教高手,深度问题。暂时无人能解决。。。。。。。。。。。。。

NS_RMP 2006-09-25 03:11:28
function create_abc(dbs: tdatabase): Tfront;
这是dll中声明的函数create_abc(dbs: tdatabase) TfronT 为类些函数返回类 dbs为连接数据库的
Tdatabase 数据库连接为BDE

调用的时候TYPE
type
TStrFunction=function ():Tfront;stdcall;
这样调出来有时行但大多时候不行提示出错。

type
TStrFunction=function (dbs: tdatabase): Tfront;

但是Tdatabase这个类是在动态链接库中单元里面的设置。在调用的时候没有这个类
如果加入其单元调出数据也出错不知是何故
...全文
165 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
netfly 2006-09-25
  • 打赏
  • 举报
回复
一般来讲使用BDE,然后在DLL里传TDATABASE或者TSESSION是有问题的,这个在DELPHI的帮助里有讲,主要是因为TSESSION默认创建的时候是一个SINGLE实例,如果在DLL里不处理这个东西,那么在DLL的上下文环境里的默认的TSESSION和你的调用程序的TSESSION是不同的,所以其所属的TDATABASE也是不同。
Rubi 2006-09-25
  • 打赏
  • 举报
回复
yun
blueflag 2006-09-25
  • 打赏
  • 举报
回复
我更晕~~
董董 2006-09-25
  • 打赏
  • 举报
回复
TDmd的对象,在设计时没有,在运行时动态生成?如果是这样,那TDmd里面的Server1和Server2也需要动态生成啊!

DM:= TDmd.Create(nil);
dbs1 :=DM.Server1;
dbs1.Connected := true;
单从上面可以认为,DM.Server1还没有被动态生成,难道在TDmd.OnCreate事件中建立了?

还有,Tfront到底是如何定义的啊?

我承认,我已经晕了。


NS_RMP 2006-09-25
  • 打赏
  • 举报
回复
兄弟们补充补充:
此单元放两TDatabase控件用于连接数据库(A单元) 为BDE数据源

type
TDmd = class(TDataModule)
Server1: TDatabase;
Server2: TDatabase;

函数(建立数据库连接)use A单元
function create_abc(dbs: tdatabase): Tfront;
var
......
begin
.......................................
DM:= TDmd.Create(nil);
dbs1 :=DM.Server1;
dbs1.Connected := true;
.........................................
end;


调用函数:
type
TStrFunction=function (dbs:Tdatabase):Tfront;stdcall;

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧