我想让软件各部份的功能分别做成DLL,客户端调用DLL实现操作数据库的功能...现在出了一点问题,我在客户端直接用socketconnect连到服务器端,在运行时用按钮刷新数据库在客户端的显示效果,很正常..但是通过客户端调用其他部份(已做成dll,在客户端载入时,类似插件加载)时..例如:客户端通过一按钮点击后,加载dll,出现合同管理窗口.想在这个窗口中实现合同的添加,删除,管理功能..界面与客户端类似,所以也加了socketconnect,clientdataset,datasource,dategrid等组件来连接服务器端,在测试阶段(未运行),设置好各项参数,dategrid可以正常显示数据...但是我在运行时用一个按钮来实现刷新时却出现了问题...Access violation at address 0123BC4E in module 'dpr_ht.dll'.Read of address 00000058这是什么意思啊??是不是表明封装的dll不可以向服务器端发送请求?
解决方案 »
- adodataset 无法取出相应字段值!请高手指点,下面为代码
- 开贴补1000分,请 ly_liuyang(Liu Yang) 进来接分(10)
- ReportBulider+Delphi5打印时不显示!急!!!
- 如何靠发送消息传递焦点,发送成功后杀掉此消息,以阻止程序去执行别的事件?
- 菜鸟问题:如何让程序最小化后像QQ一样隐藏在时钟那一栏,
- 请高手读一下关于消息的代码!如何更正???
- 在程序中如何让一个事件失效和有效。
- 如何详细的理解Thread,Handle
- 飓风搜索通真的挺神奇的!耗用资源特别小!
- 又一MS面试题目,先做出来的有分!
- 请问做一个类似acdsee的软件时怎样实现缩略图查看呢?(如果分不够再另外给)
- 游戏中怪物的每一个动作都是一副图片吗?我是新手,多谢指教?
function Showfrm_main(AHandle: THandle): Boolean;
var
frmmain: TfrmHT_Main;
begin
result := true;
try
//传递应用程序地址
application.Handle := AHandle;
//创建窗体
frmmain := TfrmHT_Main.Create(Application);
TDM.Create(Application);////////////////我想在窗口创建的同时,创建这个数据池(刚学Delphi,不知道这个说法行不行)...应该怎么写呢?
try
//给窗体标题赋值
//frmht_main.Caption := '合同信息管理';//ACaption;
//模式显示窗体
frmmain.ShowModal;
finally
frmmain.Free;
end;
except
result := false;
end;
end;我想在这个函数当中加入创建DM(一个Data Module,所有与服务器端连接的clientdataset都在此,便于插件的主窗口调用),那我应该怎么写这语句?(因为刚开始学Delphi,一些基本信息还未明了,若能顺便把代码写出来,万分感谢)麻烦你了!
procedure TfrmHT_Main.SpeedButton1Click(Sender: TObject);
begin
DM.CDS_TEST.Active :=True;
end;
1、一种解决方法是:不要静态调用;
2、不要传入Handle,handle在动态库中用Api查找的方式得到
1.不要静态调用?我用的dll是在运行时动态载入的呀..还是我的理解有误?
2.我要的效果是这样的:当主程序开始运行时,只是加载插件的一些基本信息,比如插件的ID号等,以此来判别用户的操作权限.当运行插件时,再载入插件窗口的各项信息,包括连接服务器端数据库的DataModule,以及其他的配置信息..现在遇到的问题是,当运行插件主窗口时,DataModule并没有同时被加载(创建),导致插件主窗口的DBGrid无法显示数据集,所以我想请教怎么在加载插件窗口(内有一SocketConnection连接服务器端)的同时,载入DataModule,并通过SocketConnect连接到服务器端(亦即中间层)的数据集...代码应该怎么写呢?
你在导出函数中
创建一个DataModule
DM:= TDataModule.Create(Nil);
然后就可以用了
该DM你可以一开始放好,将Query放在里面
最后退出的时候释放掉
FreeAndNIl(DM);
我在Showfrm_main接口函数中加入
try
//给窗体标题赋值
//frmht_main.Caption := '合同信息管理';//ACaption;
//模式显示窗体
frmmain.ShowModal;
DM.Create(nil);
finally
frmmain.Free;
FreeAndNIl(DM);
end;
也还是不行(当然前面已有定义变量DM为TDM)...真想不出问题是出在哪里:(