编译通过,可一点"连接设备"等按钮,就出现存取地址违例,提示:Project t1.exe raised exception class EAccessviolation with message '存取地址 10002EBD违例发生在模块'EtesnMMS.ocx'中,读在地址00000004里',Process stopped.use step or run to continue.
请问一般是什么原因造成这些的?这个控件在vc下没有任何问题,因为我对delphi很不熟悉,很简单的弄了一下,请大家看一下有哪些可以会造成这个问题.谢谢.
ps:下面的乱码是汉字和注释信息,应该不影响判断吧?复制下来就是乱码.晕.谢谢.
unit ocx6;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, ETESNMMSLib_TLB, StdCtrls;type
TForm1 = class(TForm)
Exit: TButton;
InitModel: TButton;
SendSMS: TButton;
SendMMS: TButton;
DisConnectModem: TButton;
ConnectModem: TButton;
EtesnMMS1: TEtesnMMS;
procedure InitModelClick(Sender: TObject);
procedure ConnectModemClick(Sender: TObject);
procedure DisConnectModemClick(Sender: TObject);
procedure SendMMSClick(Sender: TObject);
procedure SendSMSClick(Sender: TObject);
procedure ExitClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
{$R *.dfm}procedure TForm1.InitModelClick(Sender: TObject);
//初始化
var nRes:integer;
begin
nRes:=EtesnMMS1.InitModel('C:\RecvMMS',7,1,101,1);
if(nRes>0)
then
showMessage(初始化成功')
else if(nRes=0)
then ShowMessage('初始化失败')
else if(nRes=-4)
then ShowMessage('³õʼ»¯Ê§°Ü,²»Ö§³ÖµÄ¼ÓÃܹ·ÀàÐÍ!')
end;
procedure TForm1.ConnectModemClick(Sender: TObject);
//Á¬½ÓÉ豸
var
nRes:integer;
begin
nRes:=EtesnMMS1.ConnectModem('com1');
if (nRes=1)
then showmessage('ÕýÔÚÆô¶¯Á¬½ÓÉ豸£¬ÇëÉÔºò')
else if (nRes=-1)
then showmessage('δ³É¹¦³õʼ»¯¿Ø¼þ£¬ÇëÏȳõʼ»¯¿Ø¼þ')end;procedure TForm1.DisConnectModemClick(Sender: TObject);
//¶Ï¿ªÉ豸Á¬½Ó
begin
EtesnMMS1.DisConnectModem;
showmessage('ÒѾ­¶Ï¿ªÉ豸Á¬½Ó');
end;procedure TForm1.SendMMSClick(Sender: TObject);
//·¢ËͲÊÐÅ
var
nRes,m_nSendMsgIndex:integer;
m_strSendNumber,m_strMMSTitle,m_strMMSRes:string;
begin
nRes:=EtesnMMS1.SendMMS(m_strSendNumber,m_strMMSTitle,m_strMMSRes,m_nSendMsgIndex); if (nRes=1)
then showmessage('Ìá½»²ÊÐųɹ¦£¬²ÊÐÅÒѼÓÈë´ý·¢Áбí')
else if(nRes=-1)
then showmessage('Ìá½»²ÊÐÅʧ°Ü£¬ÉÐδÁ¬½Óµ½²ÊÐÅÉ豸')
else if(nRes=-2)
then showmessage('Ìá½»²ÊÐÅʧ°Ü£¬µ±Ç°Ê¹ÓÃģʽ²»Ö§³Ö¶ÌÐÅÊÕ·¢')
else if(nRes=-3)
then showmessage('Ìá½»²ÊÐÅʧ°Ü£¬Î´³É¹¦³õʼ»¯Ä£¿é£¬ÇëÏȳõʼ»¯¿Ø¼þ')
else if(nRes=-4)
then showmessage('Ìá½»²ÊÐÅʧ°Ü£¬²ÊÐÅÐÅÏ¢Îļþ²»´æÔÚ»òΪ¿Õ')
else if(nRes=-5)
then showmessage('²ÊÐÅÐÅÏ¢Îļþ¸ñʽ²»ÕýÈ·')
end;procedure TForm1.SendSMSClick(Sender: TObject);
//·¢ËͶÌÐÅ
var
nRes,m_nSendMsgIndex:integer;
strSendNumber,strSmsContent:string;
begin
nRes:=EtesnMMS1.SendSMS(strSendNumber,strSmsContent,m_nSendMsgIndex);
if(nRes=1)
then showmessage('Ìá½»¶ÌÐųɹ¦£¬ÒѼÓÈë¶ÌÐÅ´ý·¢Áбí')
else if(nRes=-1)
then showmessage('Ìá½»¶ÌÐÅʧ°Ü£¬ÉÐδÁ¬½Óµ½¶ÌÐÅÉ豸')
else if(nRes=-2)
then showmessage('Ìá½»¶ÌÐÅʧ°Ü£¬µ±Ç°Ê¹ÓÃģʽ²»Ö§³Ö¶ÌÐÅÊÕ·¢')
else if(nRes=-3)
then showmessage('Ìá½»¶ÌÐÅʧ°Ü£¬Î´³É¹¦³õʼ»¯¿Ø¼þ£¬ÇëÏȳõʼ»¯')end;procedure TForm1.ExitClick(Sender: TObject);
//Í˳ö
begin
close;
end;procedure TForm1.FormCreate(Sender: TObject);
beginend;end.
请问一般是什么原因造成这些的?这个控件在vc下没有任何问题,因为我对delphi很不熟悉,很简单的弄了一下,请大家看一下有哪些可以会造成这个问题.谢谢.
ps:下面的乱码是汉字和注释信息,应该不影响判断吧?复制下来就是乱码.晕.谢谢.
unit ocx6;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, ETESNMMSLib_TLB, StdCtrls;type
TForm1 = class(TForm)
Exit: TButton;
InitModel: TButton;
SendSMS: TButton;
SendMMS: TButton;
DisConnectModem: TButton;
ConnectModem: TButton;
EtesnMMS1: TEtesnMMS;
procedure InitModelClick(Sender: TObject);
procedure ConnectModemClick(Sender: TObject);
procedure DisConnectModemClick(Sender: TObject);
procedure SendMMSClick(Sender: TObject);
procedure SendSMSClick(Sender: TObject);
procedure ExitClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
{$R *.dfm}procedure TForm1.InitModelClick(Sender: TObject);
//初始化
var nRes:integer;
begin
nRes:=EtesnMMS1.InitModel('C:\RecvMMS',7,1,101,1);
if(nRes>0)
then
showMessage(初始化成功')
else if(nRes=0)
then ShowMessage('初始化失败')
else if(nRes=-4)
then ShowMessage('³õʼ»¯Ê§°Ü,²»Ö§³ÖµÄ¼ÓÃܹ·ÀàÐÍ!')
end;
procedure TForm1.ConnectModemClick(Sender: TObject);
//Á¬½ÓÉ豸
var
nRes:integer;
begin
nRes:=EtesnMMS1.ConnectModem('com1');
if (nRes=1)
then showmessage('ÕýÔÚÆô¶¯Á¬½ÓÉ豸£¬ÇëÉÔºò')
else if (nRes=-1)
then showmessage('δ³É¹¦³õʼ»¯¿Ø¼þ£¬ÇëÏȳõʼ»¯¿Ø¼þ')end;procedure TForm1.DisConnectModemClick(Sender: TObject);
//¶Ï¿ªÉ豸Á¬½Ó
begin
EtesnMMS1.DisConnectModem;
showmessage('ÒѾ­¶Ï¿ªÉ豸Á¬½Ó');
end;procedure TForm1.SendMMSClick(Sender: TObject);
//·¢ËͲÊÐÅ
var
nRes,m_nSendMsgIndex:integer;
m_strSendNumber,m_strMMSTitle,m_strMMSRes:string;
begin
nRes:=EtesnMMS1.SendMMS(m_strSendNumber,m_strMMSTitle,m_strMMSRes,m_nSendMsgIndex); if (nRes=1)
then showmessage('Ìá½»²ÊÐųɹ¦£¬²ÊÐÅÒѼÓÈë´ý·¢Áбí')
else if(nRes=-1)
then showmessage('Ìá½»²ÊÐÅʧ°Ü£¬ÉÐδÁ¬½Óµ½²ÊÐÅÉ豸')
else if(nRes=-2)
then showmessage('Ìá½»²ÊÐÅʧ°Ü£¬µ±Ç°Ê¹ÓÃģʽ²»Ö§³Ö¶ÌÐÅÊÕ·¢')
else if(nRes=-3)
then showmessage('Ìá½»²ÊÐÅʧ°Ü£¬Î´³É¹¦³õʼ»¯Ä£¿é£¬ÇëÏȳõʼ»¯¿Ø¼þ')
else if(nRes=-4)
then showmessage('Ìá½»²ÊÐÅʧ°Ü£¬²ÊÐÅÐÅÏ¢Îļþ²»´æÔÚ»òΪ¿Õ')
else if(nRes=-5)
then showmessage('²ÊÐÅÐÅÏ¢Îļþ¸ñʽ²»ÕýÈ·')
end;procedure TForm1.SendSMSClick(Sender: TObject);
//·¢ËͶÌÐÅ
var
nRes,m_nSendMsgIndex:integer;
strSendNumber,strSmsContent:string;
begin
nRes:=EtesnMMS1.SendSMS(strSendNumber,strSmsContent,m_nSendMsgIndex);
if(nRes=1)
then showmessage('Ìá½»¶ÌÐųɹ¦£¬ÒѼÓÈë¶ÌÐÅ´ý·¢Áбí')
else if(nRes=-1)
then showmessage('Ìá½»¶ÌÐÅʧ°Ü£¬ÉÐδÁ¬½Óµ½¶ÌÐÅÉ豸')
else if(nRes=-2)
then showmessage('Ìá½»¶ÌÐÅʧ°Ü£¬µ±Ç°Ê¹ÓÃģʽ²»Ö§³Ö¶ÌÐÅÊÕ·¢')
else if(nRes=-3)
then showmessage('Ìá½»¶ÌÐÅʧ°Ü£¬Î´³É¹¦³õʼ»¯¿Ø¼þ£¬ÇëÏȳõʼ»¯')end;procedure TForm1.ExitClick(Sender: TObject);
//Í˳ö
begin
close;
end;procedure TForm1.FormCreate(Sender: TObject);
beginend;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, ETESNMMSLib_TLB, StdCtrls;type
TForm1 = class(TForm)
Exit: TButton;
InitModel: TButton;
SendSMS: TButton;
SendMMS: TButton;
DisConnectModem: TButton;
ConnectModem: TButton;
EtesnMMS1: TEtesnMMS;
procedure InitModelClick(Sender: TObject);
procedure ConnectModemClick(Sender: TObject);
procedure DisConnectModemClick(Sender: TObject);
procedure SendMMSClick(Sender: TObject);
procedure SendSMSClick(Sender: TObject);
procedure ExitClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
{$R *.dfm}procedure TForm1.InitModelClick(Sender: TObject);
//³õʼ»¯¿Ø¼þ
var nRes:integer;
begin
nRes:=EtesnMMS1.InitModel('C:\RecvMMS',7,1,101,1);
if(nRes>0)
then
showMessage('³õʼ»¯¿Ø¼þ³É¹¦,ÕÒµ½¼ÓÃܹ·!')
else if(nRes=0)
then ShowMessage('³õʼ»¯¿Ø¼þʧ°Ü,δÕÒµ½¼ÓÃܹ·!')
else if(nRes=-4)
then ShowMessage('³õʼ»¯Ê§°Ü,²»Ö§³ÖµÄ¼ÓÃܹ·ÀàÐÍ!')
end;
procedure TForm1.ConnectModemClick(Sender: TObject);
//Á¬½ÓÉ豸
var
nRes:integer;
begin
nRes:=EtesnMMS1.ConnectModem('com1');
if (nRes=1)
then showmessage('ÕýÔÚÆô¶¯Á¬½ÓÉ豸£¬ÇëÉÔºò')
else if (nRes=-1)
then showmessage('δ³É¹¦³õʼ»¯¿Ø¼þ£¬ÇëÏȳõʼ»¯¿Ø¼þ')end;procedure TForm1.DisConnectModemClick(Sender: TObject);
//¶Ï¿ªÉ豸Á¬½Ó
begin
EtesnMMS1.DisConnectModem;
showmessage('ÒѾ­¶Ï¿ªÉ豸Á¬½Ó');
end;procedure TForm1.SendMMSClick(Sender: TObject);
//·¢ËͲÊÐÅ
var
nRes,m_nSendMsgIndex:integer;
m_strSendNumber,m_strMMSTitle,m_strMMSRes:string;
begin
nRes:=EtesnMMS1.SendMMS(m_strSendNumber,m_strMMSTitle,m_strMMSRes,m_nSendMsgIndex); if (nRes=1)
then showmessage('Ìá½»²ÊÐųɹ¦£¬²ÊÐÅÒѼÓÈë´ý·¢Áбí')
else if(nRes=-1)
then showmessage('Ìá½»²ÊÐÅʧ°Ü£¬ÉÐδÁ¬½Óµ½²ÊÐÅÉ豸')
else if(nRes=-2)
then showmessage('Ìá½»²ÊÐÅʧ°Ü£¬µ±Ç°Ê¹ÓÃģʽ²»Ö§³Ö¶ÌÐÅÊÕ·¢')
else if(nRes=-3)
then showmessage('Ìá½»²ÊÐÅʧ°Ü£¬Î´³É¹¦³õʼ»¯Ä£¿é£¬ÇëÏȳõʼ»¯¿Ø¼þ')
else if(nRes=-4)
then showmessage('Ìá½»²ÊÐÅʧ°Ü£¬²ÊÐÅÐÅÏ¢Îļþ²»´æÔÚ»òΪ¿Õ')
else if(nRes=-5)
then showmessage('²ÊÐÅÐÅÏ¢Îļþ¸ñʽ²»ÕýÈ·')
end;procedure TForm1.SendSMSClick(Sender: TObject);
//·¢ËͶÌÐÅ
var
nRes,m_nSendMsgIndex:integer;
strSendNumber,strSmsContent:string;
begin
nRes:=EtesnMMS1.SendSMS(strSendNumber,strSmsContent,m_nSendMsgIndex);
if(nRes=1)
then showmessage('Ìá½»¶ÌÐųɹ¦£¬ÒѼÓÈë¶ÌÐÅ´ý·¢Áбí')
else if(nRes=-1)
then showmessage('Ìá½»¶ÌÐÅʧ°Ü£¬ÉÐδÁ¬½Óµ½¶ÌÐÅÉ豸')
else if(nRes=-2)
then showmessage('Ìá½»¶ÌÐÅʧ°Ü£¬µ±Ç°Ê¹ÓÃģʽ²»Ö§³Ö¶ÌÐÅÊÕ·¢')
else if(nRes=-3)
then showmessage('Ìá½»¶ÌÐÅʧ°Ü£¬Î´³É¹¦³õʼ»¯¿Ø¼þ£¬ÇëÏȳõʼ»¯')end;procedure TForm1.ExitClick(Sender: TObject);
//Í˳ö
begin
close;
end;procedure TForm1.FormCreate(Sender: TObject);
beginend;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, ETESNMMSLib_TLB, StdCtrls;type
TForm1 = class(TForm)
Exit: TButton;
InitModel: TButton;
SendSMS: TButton;
SendMMS: TButton;
DisConnectModem: TButton;
ConnectModem: TButton;
EtesnMMS1: TEtesnMMS;
procedure InitModelClick(Sender: TObject);
procedure ConnectModemClick(Sender: TObject);
procedure DisConnectModemClick(Sender: TObject);
procedure SendMMSClick(Sender: TObject);
procedure SendSMSClick(Sender: TObject);
procedure ExitClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
{$R *.dfm}procedure TForm1.InitModelClick(Sender: TObject);
//³õʼ»¯¿Ø¼þ
var nRes:integer;
begin
nRes:=EtesnMMS1.InitModel('C:\RecvMMS',7,1,101,1);
if(nRes>0)
then
showMessage('!')
else if(nRes=0)
then ShowMessage('³!')
else if(nRes=-4)
then ShowMessage('!')
end;
procedure TForm1.ConnectModemClick(Sender: TObject);
//
var
nRes:integer;
begin
nRes:=EtesnMMS1.ConnectModem('com1');
if (nRes=1)
then showmessage('')
else if (nRes=-1)
then showmessage('')end;procedure TForm1.DisConnectModemClick(Sender: TObject);
//
begin
EtesnMMS1.DisConnectModem;
showmessage('');
end;procedure TForm1.SendMMSClick(Sender: TObject);
//
var
nRes,m_nSendMsgIndex:integer;
m_strSendNumber,m_strMMSTitle,m_strMMSRes:string;
begin
nRes:=EtesnMMS1.SendMMS(m_strSendNumber,m_strMMSTitle,m_strMMSRes,m_nSendMsgIndex); if (nRes=1)
then showmessage('')
else if(nRes=-1)
then showmessage('')
else if(nRes=-2)
then showmessage('')
else if(nRes=-3)
then showmessage('')
else if(nRes=-4)
then showmessage('')
else if(nRes=-5)
then showmessage('')
end;procedure TForm1.SendSMSClick(Sender: TObject);
//
var
nRes,m_nSendMsgIndex:integer;
strSendNumber,strSmsContent:string;
begin
nRes:=EtesnMMS1.SendSMS(strSendNumber,strSmsContent,m_nSendMsgIndex);
if(nRes=1)
then showmessage('')
else if(nRes=-1)
then showmessage('')
else if(nRes=-2)
then showmessage('')
else if(nRes=-3)
then showmessage('')end;procedure TForm1.ExitClick(Sender: TObject);
//
begin
close;
end;procedure TForm1.FormCreate(Sender: TObject);
beginend;end.
http://community.csdn.net/Expert/topic/4718/4718418.xml?temp=.9438593
注:这个ocx控件在vc下正常,不过,它使用了多线程,不知道在delphi中是否有影响.
谢谢好心的大哥/大姐回复.谢谢.