DLL能如何接收TDataSet参数(100分)

  • 主题发起人 主题发起人 zbxx631
  • 开始时间 开始时间
Z

zbxx631

Unregistered / Unconfirmed
GUEST, unregistred user!
我想传一个数据集TDataSet参数到一个动态连接库中,
单元变量:FDataSet:TDataSet;
出口函数形式为:
声明:Procedure ShowPrint(LibHandle:THandle;Var DataSet:TDataSet);
实现:
Procedure ShowPrint(LibHandle:THandle;Var DataSet:TDataSet);
Begin
.......
Form1.FDataSet:=DataSet;
......
End;
当在程序中执行
FDataSet.First;
是程序出错
为什么怎样解决
 
uses sharemem 了吗?
 
用Pointer(就是Longint), 再转换
 
TO XEEN
没有,要USES此单元吗?
 
估计用了数据(Com)组件吧?
是不是提示“类没有引用存储”?
加上
CoInitialize(nil);
CoUninitialize;
试试。
 
含字符串操作时用 ShareMem
 
这种情况最好传_recordset
 
你把调用的Application的Handle也传进去,替换掉Dll自己的Handle,用完后再替换回来就
应该没有问题了。
 
TO KKYY:
用POINTER怎样使用
TO XEEN:
USES 那单元也没用
 
你的dll单元和你调用Dll的单元都要uses sharemem,而且要在uses列表的第一项.
 
TO ZXBYH:
用_RecordSet不知与用TDATASET有什么不用,
怎样使用
 
要经过PCAHR处理
 
to xeen:
按你的方法在FDATASET.FIRST不再出错,
但在退出主程序后出现Invalid pointer operation 的错误,
不知是由于什么原因引起的, 当不传DATASET:TDATASET参数时,不会有这个错误.
不知是退出DLL时还要作些什么处理.
现暂时发60分给你.
 
uses sharemem 要在你project文件单元的第一项,而不是调用Dll单元的第一项。
 
to xeen:
刚才出现Invalid pointer operation 的原因说错了。
主程序只要包含Sharemem,关闭主程序就会出现这个问题
 
TO XEEN:
我查过其它贴子,问题确实应该这样解决。
但为什么会出现那个指针错误就明白了。
分数全给你,
谢谢。
 
TO XEEN:
我查过其它贴子,问题确实应该这样解决。
但为什么会出现那个指针错误就不明白了。
分数全给你,
谢谢。
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部