读书人

Delphi7检测到异常类 EAccessViolatio

发布时间: 2012-05-28 17:59:54 作者: rapoo

Delphi7检测到错误类 EAccessViolation,错误信息:'Access violation at address 0047D5C7 in module
工程 Project1.exe 检测到错误类 EAccessViolation,错误信息:'Access violation at address 0047D5C7 in module 'Project1.exe'.Read of address 00000068'.进程中止.使用单步或运行继续运行

调试运行的时候出现这样的错误,把那段代码贴出来求大伙帮看看是怎么回事,我是新手,不要骂我笨啊
分不多,如果成功解决的话再加分,谢谢各位了

************************错误代码*************************************************
Function TForm1.SendToServer(AThread:TIdPeerThread;Cmd:String): Boolean;
var
MyStream: TMemoryStream;
i:integer;
begin
MyStream:=TMemoryStream.Create;
try
MyStream.Write(Cmd[1],Length(Cmd));
MyStream.Position:=0;
i:=MyStream2.size;
AThread.Connection.WriteLn(inttostr(i)); //提示就是在这里有错误
AThread.Connection.WriteStream(MyStream); //这句也和上面的一样有错误
Result := True;
except
AThread.Connection.Disconnect;
AThread.Terminate;
MyStream.Free;
Result := False;
end;
MyStream.Free;
end;
**********************************************************************************
procedure TForm1.TCPServer1Execute(AThread: TIdPeerThread);
var
MyStream: TMemoryStream;
begin
MyStream:=TMemoryStream.Create;
try
RecCMD:=AThread.Connection.ReadLn();
except
Exit;
end;

case strtoint(RecCMD) of
011:begin
if ReadSeverStream(AThread,TempStr) then
begin
if TempStr='返回数据成功' then
AThread.Connection.WriteLn('CMD012'); //这句话放在这里就好使,可以成功发送出去数据
end;
end;

end;
end;

[解决办法]
楼主的程序本身就有问题
try

except
.......
MyStream.Free;
.......
end;
MyStream.Free;
如果出现异常,那么MyStream就会被再次释放,av错误!


另外不知道MyStream2是哪里来的

AThread.Connection.WriteLn(inttostr(i));
AThread.Connection.WriteStream(MyStream); //
这2句本身没有错,很有可能是Connection已经无效


读书人网 >.NET

热点推荐