在delphi中调用dll函数了,有一个模块单独呈现的时候可以,但是放在那个大程序下运行的时候总是会提示错误:access violation at Ox0003……的,而且是地址溢出的原因,主界面代码如下:
var
lp,rw,alphTa:double;
Swb:double;
begin
lp:=strtofloatDef(edtLp.text,0);
rw:=strtofloatDef(edtrw.text,0);
alphTa:=strtofloatDef(edtxwj.text,0);
Swb_Calculate(lp,rw,alphTa,Swb);
edtjt.text:=FloatTostr(Swb);
end;
其中,Swb_Calculate这个dll函数的代码如下:
var
rwD,C1,C2:Double;
begin
try
Result:=0;
if (alphTa=0) or (alphTa=360) then
begin
C1:=0.16;
C2:=2.675;
end
else if alphTa=180 then
begin
C1:=0.026;
C2:=4.532;
end
else if alphTa=120 then
begin
C1:=6.6*Power(10,-3);
C2:=5.32;
end
else if alphTa=90 then
begin
C1:=1.9*Power(10,-3);
C2:=6.155;
end
else if alphTa=60 then
begin
C1:=3.0*Power(10,-4);
C2:=7.509;
end
else if alphTa=45 then
begin
C1:=4.6*Power(10,-5);
C2:=8.791;
end;
Swb:=0;
rwD:=rw*(lp+rw);
Swb:=C1*exp(C2*rwD);
Result:=1;
except end;因为之前把这个模块单独列出来验证过,这个代码的语法没什么问题,但是在那个大程序里面总是找不出问题来,不管是运行还是调试,只要是计算,那个警告符就出来了,哎无语呀,对delphi不太熟悉,请各位大神帮帮忙啦……
var
lp,rw,alphTa:double;
Swb:double;
begin
lp:=strtofloatDef(edtLp.text,0);
rw:=strtofloatDef(edtrw.text,0);
alphTa:=strtofloatDef(edtxwj.text,0);
Swb_Calculate(lp,rw,alphTa,Swb);
edtjt.text:=FloatTostr(Swb);
end;
其中,Swb_Calculate这个dll函数的代码如下:
var
rwD,C1,C2:Double;
begin
try
Result:=0;
if (alphTa=0) or (alphTa=360) then
begin
C1:=0.16;
C2:=2.675;
end
else if alphTa=180 then
begin
C1:=0.026;
C2:=4.532;
end
else if alphTa=120 then
begin
C1:=6.6*Power(10,-3);
C2:=5.32;
end
else if alphTa=90 then
begin
C1:=1.9*Power(10,-3);
C2:=6.155;
end
else if alphTa=60 then
begin
C1:=3.0*Power(10,-4);
C2:=7.509;
end
else if alphTa=45 then
begin
C1:=4.6*Power(10,-5);
C2:=8.791;
end;
Swb:=0;
rwD:=rw*(lp+rw);
Swb:=C1*exp(C2*rwD);
Result:=1;
except end;因为之前把这个模块单独列出来验证过,这个代码的语法没什么问题,但是在那个大程序里面总是找不出问题来,不管是运行还是调试,只要是计算,那个警告符就出来了,哎无语呀,对delphi不太熟悉,请各位大神帮帮忙啦……
解决方案 »
- Delphi现任版主的艳照遭泄露(名字以*号表示,自己猜)
- 求一个控件
- 谢谢老兄,那怎么样打开一个本地的网页呢?ShellExecute(Handle, 'Open', 'IEXPLORE.EXE', 'Http://haitian.myrice.com', 1)
- 想了解框架窗体如何实现?
- 在打印发票时,如何实现在小计=0时不打印"0",只打印空字符.
- 如何对TListview中的记录进行排序?
- 那位大虾,知道可以发送16进值的打印语句,pb可以用PrintSend的,d6有吗?谢谢!
- SecondsIdle函数返回问题
- 那我在问一个调用文件的问题吧,请看下!
- 偶要 uses 的数据模块,在对话框里找不到,这是怎么回事呢?(牛虻)
- Delphi7 调用WebService 如何自行组装报文?
- 请问, delphi 7 能做这种驾驶仓吗?
比如是STDCALL、还是C调用方式,
在DLL里和调用声明处,需要一致,
估计你的问题可能出在这里。