一个文件传输中的问题

oldwolf201 2003-10-21 09:38:00
我用TNMSTRM和TNMSTRMSERV两个控件进行局域网内的文件传输。
在传输方
MyFStream = new TFileStream(strpath+filename1, fmOpenRead);
try
{
NMStrm1->Host = Socket->RemoteAddress;
NMStrm1->FromName = "NetMasters";
NMStrm1->PostIt(MyFStream);
}
catch(...)
{

}
MyFStream->Free();
delete MyFStream;

在接收方:
void __fastcall TFrmLogin::NMStrmServ1MSG(TComponent *Sender,
const AnsiString sFrom, TStream *strm)
{
TFileStream *MyFStream;
MyFStream = new TFileStream(path+"radtek.cfg", fmCreate);
try
{
MyFStream->CopyFrom(strm, strm->Size);
tfile="s";
}
catch(...)
{
tfile="f";
}
MyFStream->Free();
delete MyFStream;

这样文件传输的功能可以实现,但传输完成后程序退出时会报错!
报错为一段内存不能为读。
请问是什么原因,该如何解决?
...全文
126 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
oldwolf201 2003-10-21
  • 打赏
  • 举报
回复
把上面那个错误改了以后还是有错误。
我的接收端是写个一个DLL里面的,现在程序释放这个DLL的时候会报错,还是报错内存不能为读,去掉这个接收部分则能正常释放DLL。
是不是要先让NMStrmServ1停止,然后再释放?
佣工7001 2003-10-21
  • 打赏
  • 举报
回复
楼上说得没错!
duduwolf 2003-10-21
  • 打赏
  • 举报
回复
MyFStream->Free();
delete MyFStream;
重复删除MyFStream;
建议只用delete MyFStream,把Free的那句删掉

还有,如果你传输的文件比较大,我记得好像大于20多M以后,NMStrm就容易出错,建议直接用socket或者TWinSocket进行大文件传输

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧