这个问题我实正搞不定,SOS。求助 求助(10分)

  • 主题发起人 主题发起人 aynes
  • 开始时间 开始时间
A

aynes

Unregistered / Unconfirmed
GUEST, unregistred user!
有个函数在C中的定义为:int WINAPI GetSMSGateWay ( char * )<br>我在Delphi中的定义为: &nbsp;function GetSMSGateWay(s:PChar):integer;stdcall;external 'RemexSMSInterface.dll';<br><br>作了个按钮,调用此函数,代码为:<br>procedure TForm1.Button5Click(Sender: TObject);<br>var<br>&nbsp;s:pchar;<br>&nbsp;i:integer;<br>begin<br>&nbsp;i:=GetSMSGateWay(s);<br>&nbsp;showmessage(inttostr(i));<br>end;<br><br>我编译没问题,运行按了按钮后出错,提示为:<br>&nbsp; Project Project1.exe raised exception class EAccessViolation with<br>&nbsp; message 'Access violation at address 00419633 in module <br>&nbsp; 'PROJECT1.EXE'. Read of address 616E6983'. Process stopped. Use <br>&nbsp; Step or Run to continue.<br><br><br>请教各位高手,这是什么地方出错了。分不多请见谅。<br>
 
你的S没有分配内存空间
 
procedure TForm1.Button5Click(Sender: TObject);<br>var<br>s:pchar;<br>i:integer;<br>s:=stralloc(1000);<br>s:='.....';<br>begin<br>i:=GetSMSGateWay(s);<br>showmessage(inttostr(i));<br>end;
 
我试试,我一直在线。
 
多谢两位,我试过了,运行一切OK<br>就是在退出程序的时候还有些问题,是不是在退出的时候要对S作些操作,比如说是注销什么的,应该如何写代码?<br>出错信息是:<br>Project Project1.exe raised exception class EAccessViolation with<br>message 'Access violation at address 004559EC in module <br>'PROJECT1.EXE'.Read of address FFFFFFFF'.Process stopped. Use<br>Step or Run to continue.
 
程序退出时没有释放已分配内存,需要释放<br>最好不用PChar,可以将S定义为String在调用函数时强制转换为PChar
 
在程序中应该怎样写呢?请告诉我。<br>我马上给分。
 
谢了,各位
 

Similar threads

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