关于dll传参数的问题

zninger 2003-08-19 10:13:44
我自己编写了一个dll文件,调用时需传递一个TStoredProc类型的参数,但是当被
传递的StoredProc打开时,调用时就会出现写地址错误,而被调用的StoredProc关闭的时候,不会出错,这是什么原因?
以下是源代码
procedure spShowForm(AHandle:THandle;strModule:string;strRegCode:string;spParam:TStoredProc);safecall;
var
i:integer;
begin
//sp,Module,RegCode,ArrayLen是全局变量
Application.Handle:=AHandle;
Module:=strModule;
RegCode:=strRegCode;
ArrayLen:=spParam.Fields.Count;
sp:=spParam;
frmReportPreview:=TfrmReportPreview.Create(Application);
frmReportPreview.ds.DataSet:=sp;//sp和一个数据源相连
frmReportPreview.ShowModal;
end;
...全文
39 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxpbuaa 2003-08-19
  • 打赏
  • 举报
回复
使用sharemem限制比较多。
传地址看看,就是定义为:
procedure spShowForm(AHandle:THandle;strModule:string;strRegCode:string;spParamAddr: Integer);safecall;

调用的时候给spParamAddr传入Integer(StoredProc1)

在dll中再强制转化TStoredProc(spParamAddr)

————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————


overtime 2003-08-19
  • 打赏
  • 举报
回复
在传递复杂对象的时候在你的dll文件的第一位要包含sharemem单元,你调用的时候工程文件中同样要包含这个文件而且是第一位,原因吗?你找找相关的资料

2,497

社区成员

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

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