程序编译可通过,可一点"连接设备"等按钮,就出现存取地址违例,提示:Project t1.exe raised exception class EAccessviolation with message '存取地址 10002EBD违例发生在模块'EtesnMMS.ocx'中,读在地址00000004里',Process stopped.use step or run to continue.
请问一般是什么原因造成这些的?这个控件在vc下没有任何问题,因为我对delphi很不熟悉,很简单的弄了一下,请大家看一下有哪些可以会造成这个问题.谢谢.
ps:复制出来是乱码,所以showmessage中的信息删除掉了.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:复制出来是乱码,所以showmessage中的信息删除掉了.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.
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;
先看下EtesnMMS1有没有创建,再看看EtesnMMS1中有没有需要创建的对象,比如指针或者属性等
不知道能不能帮上忙……
如果您有时间帮我看一下。谢谢。