我在调试delphi时出现了一个错误,调了大半天都不知道错哪,能不能帮我看下
错误:
Project project1.exe raised exception class EaccessViolation with message
‘Access violation at address 0040414EA in module’project1.exe’.Read
Of address 50472C43’.Process stopped.Use Step or Run to continre;
程序错误的位置:
procedure TForm1.BitBtn2Click(Sender: TObject);//按键2
begin
{sbuf[0] :=$53; //534156310D0A
sbuf[1] :=$41;
sbuf[2] :=$56;//帧头
sbuf[3] :=$31;//命令号
sbuf[4] :=$0D;
sbuf[5] :=$0A; senddata;//调用发送函数}
StrData:='SAV1';//错在这里
SChar_and_Send();
end;
上面程序是我在接收PIC串口数据后,要再向PIC串口发送数据时出现的错误.
用FT232USB转串口芯片. 下面是代码:
procedure SChar_and_Send();
begin
SetChar(StrData);
senddata;
end; procedure SetChar(var x:string);
var
i,Len:byte;
begin
Len:=length(x)+2;
setlength(sbuf,Len);
for i:=0 to len-3 do
begin
sbuf[i]:=ord(x[i+1]);
end;
sbuf[i]:=$0D;
i:=i+1;
sbuf[i]:=$0A;
end; procedure senddata;
var
i:integer;
commflg:boolean;
begin
viewstring:='';
commflg:=true;
for i:=0 to length(StrData)+1 do
begin
if not Form1.comm1.writecommdata(@sbuf[i],1) then
begin
commflg:=false;
break;
end;
sleep(1);//发送时字节间的延时 viewstring:=viewstring+ inttohex(sbuf[i],2)+' '; end; viewstring:='发送'+ viewstring; Form1.memo1.lines.add(viewstring); Form1.memo1.lines.add(''); if not commflg then messagedlg('发送失败 !' ,mterror,[mbyes],0);
//sleep(2000);
//if(comrs=false)then senddata;
end;
错误:
Project project1.exe raised exception class EaccessViolation with message
‘Access violation at address 0040414EA in module’project1.exe’.Read
Of address 50472C43’.Process stopped.Use Step or Run to continre;
程序错误的位置:
procedure TForm1.BitBtn2Click(Sender: TObject);//按键2
begin
{sbuf[0] :=$53; //534156310D0A
sbuf[1] :=$41;
sbuf[2] :=$56;//帧头
sbuf[3] :=$31;//命令号
sbuf[4] :=$0D;
sbuf[5] :=$0A; senddata;//调用发送函数}
StrData:='SAV1';//错在这里
SChar_and_Send();
end;
上面程序是我在接收PIC串口数据后,要再向PIC串口发送数据时出现的错误.
用FT232USB转串口芯片. 下面是代码:
procedure SChar_and_Send();
begin
SetChar(StrData);
senddata;
end; procedure SetChar(var x:string);
var
i,Len:byte;
begin
Len:=length(x)+2;
setlength(sbuf,Len);
for i:=0 to len-3 do
begin
sbuf[i]:=ord(x[i+1]);
end;
sbuf[i]:=$0D;
i:=i+1;
sbuf[i]:=$0A;
end; procedure senddata;
var
i:integer;
commflg:boolean;
begin
viewstring:='';
commflg:=true;
for i:=0 to length(StrData)+1 do
begin
if not Form1.comm1.writecommdata(@sbuf[i],1) then
begin
commflg:=false;
break;
end;
sleep(1);//发送时字节间的延时 viewstring:=viewstring+ inttohex(sbuf[i],2)+' '; end; viewstring:='发送'+ viewstring; Form1.memo1.lines.add(viewstring); Form1.memo1.lines.add(''); if not commflg then messagedlg('发送失败 !' ,mterror,[mbyes],0);
//sleep(2000);
//if(comrs=false)then senddata;
end;
解决方案 »
- Image控件上能否设置AlphaBlendValue?
- 有没有delphi编写的AES程序,跟PHP自带的AES函数写的一样的
- MScomm控件串口:十进制大于127就不能显示到LED的问题
- 最近在深入学习MSSQL数据库,遇到了一个简单但是没办入手的问题。大家帮帮我。
- Ado+sql2000存储过程怎样返回结果集?
- 各位高手,请帮忙,我实在搞不定了,谢谢了!
- 请问在杭州哪里有Delphi的培训?
- Oops请进〉〉
- ODBC 怎么设置?(Delphi)
- 大虾们:做局域网的仓库管理系统,用何数据库最好?有答有分,请热烈一点!
- 用api创建一个窗体(背景)..................100分..........大师级别的帮帮我吧.................
- 出来晒晒马甲,都发酶了..
如果是这里错了应该就是类型定义有错了,StrData是怎么定义的?看你这样赋值应该是String类型,
StrData:='SAV1';//错在这里
如果是这里错了应该就是类型定义有错了,StrData是怎么定义的?看你这样赋值应该是String类型, 我把StrData定义为String型,'SAV1'也是String型,这样有错吗?
sbuf[1] :=$41;
sbuf[2] :=$56;//帧头
sbuf[3] :=$31;//命令号
sbuf[4] :=$0D;
sbuf[5] :=$0A; senddata;//调用发送函数}
这段你注释了。Sbuf 里的数据哪里来?