社区
Delphi
帖子详情
DElphi 调dll 报地址错误 求大虾帮~
freechy2008
2011-08-21 05:35:56
在delphi中调用dll后 显示成功,但运行到该函数的结尾end时 报错。
...全文
223
11
打赏
收藏
DElphi 调dll 报地址错误 求大虾帮~
在delphi中调用dll后 显示成功,但运行到该函数的结尾end时 报错。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
freechy2008
2011-08-22
打赏
举报
回复
这段代码执行是可以正确执行的。但只要改动就会报错。即使你的改动完全没有意义。比如在此函数加一个参数。但我不用它执行ir:=IC_WritePurchase_D0_PS01就一定报错 执行 ir:=IC_Purchase_D0_Ex却不会。
但ir:=IC_WritePurchase_D0_PS01执行是成功的 需运行到end.的时候才报错
Access violation at address 0x000000 in module 'star.exe '. Read
rainychan2009
2011-08-22
打赏
举报
回复
LZ,请不要相信诡异一说,至少在计算机中。你这个想法只会让你正面定位、解决问题越来越远。当遇到一个问题无从下手,可以采取砍掉一步代码,精简,然后测试的办法。
freechy2008
2011-08-22
打赏
举报
回复
当然我改变的那个函数在此函数前被调用了。这个unit 全部都存放的调用该dll的函数。问题是我只是做一个完全不影响现在执行环境的改动。就如加一个参数,却不用它。而且我是改变另外一个函数哦。而且一旦出错。我改回去。让代码完全和以前一样。还出错。 只能说太诡异。。。。。。。
freechy2008
2011-08-22
打赏
举报
回复
问题在于它本身是可以的。现在这个函数所在的unit 我改变了另外一个函数一样执行到这里也出错啊。
郁闷得想死。。。。
freechy2008
2011-08-22
打赏
举报
回复
代码太多 我吧调用方式发出来
function IC_WritePurchase_D0_PS01(iport: Longint; iDataFormat:integer; pszID:PCHAR; dkWh:double; iTimes:integer; pszDateTime:PCHAR; iParamFlag:integer; dPrewarnningkWh:double; dWarnningkWh:double; dCornerkWh:double; dDayFee:double; dMaxOverDraftkWh:double; dMaxTickkWh:double; dMaxCurrent:double; dSpecialMaxCurrent:double;iMaxTripTimes:integer; pszPassword:PCHAR; iCalcuMode:integer; var isw:integer): Longint;
stdcall; external 'starcpu2.dll';
funxu
2011-08-22
打赏
举报
回复
LZ不要被报错的位置迷惑了,感觉问题应该出现在内存的使用上,使用了不该使用的内存等,这些问题在dll释放时暴露出来,所以才会在end时弹出错误,还是把主要代码贴出来看看吧
一剑飘雪
2011-08-22
打赏
举报
回复
贴主要代码
lhs203203
2011-08-22
打赏
举报
回复
请问下你调用dll的调用方式是什么你都没有写 当然在释放的时候就会报指针错误了 加上stdcall或是cdecl就可以了
rainychan2009
2011-08-22
打赏
举报
回复
[Quote=引用 3 楼 freechy2008 的回复:]
这段代码执行是可以正确执行的。但只要改动就会报错。即使你的改动完全没有意义。比如在此函数加一个参数。但我不用它执行ir:=IC_WritePurchase_D0_PS01就一定报错 执行 ir:=IC_Purchase_D0_Ex却不会。
但ir:=IC_WritePurchase_D0_PS01执行是成功的 需运行到end.的时候才报错
Access violation at ……
[/Quote]
访问0地址,肯定是尝试访问一个没有分配内存的指针
rainychan2009
2011-08-21
打赏
举报
回复
什么样的错呢?很怀疑是string类型的形参造成的。加ShareMM
freechy2008
2011-08-21
打赏
举报
回复
附该函数源码:
function gf_WritePurchase_Ex(iMode:integer;
iDataFormat:integer;
szID:string;
dkWh:double;
iTimes:integer;
szDatetime:string;
iParamFlag:integer;
dPrewarningkWh:double;
dWarningkWh:double;
dCornerkWh:double;
dMinUsekWh:double;
dMaxOverDraftkWh:double;
dMaxTickkWh:double;
dMaxLoadkW:double;
iMaxTripTimes:integer;
iPTCT:integer;
szPassword:string;
dTickLoadThreshold:double;
isw:integer;szmetermodel:string):integer;
var
ir:integer;
begin
try
if (iMode=$D0) or (iMode=$B0) then begin
if szmetermodel ='S' then
ir:=IC_Purchase_D0_Ex(giPort,iDataFormat, PChar(szID), dkWh, iTimes , PChar(szDatetime),
iParamFlag, dPrewarningkWh, dWarningkWh, dCornerkWh, dMinUsekWh,
dMaxOverDraftkWh, dMaxTickkWh, dMaxLoadkW, iMaxTripTimes, iPTCT,PChar(szPassword), iMode, dTickLoadThreshold, isw)
else
ir:=IC_WritePurchase_D0_PS01(giPort,iDataFormat, PChar(szID), dkWh, iTimes , PChar(szDatetime),
iParamFlag, dPrewarningkWh, dWarningkWh, dCornerkWh, dMinUsekWh,
dMaxOverDraftkWh, dMaxTickkWh, dMaxLoadkW, dTickLoadThreshold,iMaxTripTimes, PChar(szPassword), iMode, isw);
end else
ir:=IC_Purchase_Ex(giPort,iDataFormat, PChar(szID), dkWh, iTimes , PChar(szDatetime),
iParamFlag, dPrewarningkWh, dWarningkWh, dCornerkWh, dMinUsekWh,
dMaxOverDraftkWh, dMaxTickkWh, dMaxLoadkW, iMaxTripTimes, iPTCT,PChar(szPassword), iMode, dTickLoadThreshold, isw);
except
ir:=-1;
end;
result:=ir;
end;
Embarcadero.
Delphi
.10.2.2.v25.0.29039.2004.Lite.v14.3完整版
Q2:启动
报
External exception C06D007F 的
错误
?这是 Castalia 的问题,Seattle IDE 直接集成了 Castalia 的代码,XE8 还可以通过注册表关闭 Castalia,Seattle 不行了 A2:后来 Unis 大侠在补丁中做了修补:Under...
RAD Studio 10.2 Toyko Update2 10.2.2 KEYGEN 亲测可用
Borland.Build.Tasks.
Delphi
.
dll
, 25.0.28979.1978, D:\Program Files (x86)\Embarcadero\Studio\19.0\bin\ Borland.Build.Tasks.Shared.
dll
, 25.0.28979.1978, D:\Program Files (x86)\Embarcadero\Studio\19.0\bin...
使用package(包功能)实现
DLL
与主程序的数据库连接共享(
Delphi
版)
如何使用
Delphi
开发大型主从架构系统-Package的秘密和威力 相信许多人和我一样,在使用
Delphi
开发应用系统的时候,一定会想到如何的切割整个应用系统。是把所有的子系统撰写成一个很大(可能会有数M.Bytes的大小)的...
Delphi
获得计算机系统配置,"获得主机名和IP
地址
" 和 "监测局域网内计算机"...
"获得主机名和IP
地址
" 和 "监测局域网内计算机"
Delphi
/ Windows SDK/APIhttp://www.
delphi
2007.net/
Delphi
Base/html/
delphi
_20061209192223212.html哪位
大虾
可以
帮
帮
忙啊,
帮
我把这两段程序分析一下啊,万分...
Delphi
DataModule使用方法
关于在formcteate事件中使用datamodule出错的解决方案: 我们先用记事本打开Project1.dpr文件发现有... 小弟也是遇到了这样的问题,经过各位
大虾
的指点加上自己的观察推测和实践. 终于发现问题所在,特在此和各位分享!!!
Delphi
5,392
社区成员
262,731
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章