CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

这段程序错在那里???高分

楼主limaoxue(易往)2002-03-08 22:34:42 在 C++ Builder / 基础类 提问

Bmp=new   Graphics::TBitmap();  
          if(GetScreen(Bmp,false))     //抓屏  
          {   myjp=new   TJPEGImage();  
              Stream=new   TMemoryStream();  
              myjp->Assign(Bmp);  
              myjp->SaveToStream(Stream);  
              temp=IntToStr(Stream->Size);  
              Socket->SendText(temp);  
              Stream->Position=0;  
              Socket->SendStream(Stream);  
              delete   myjp;  
              delete   Stream;  
          }  
          delete   Bmp;  
   
  这段图形传送跟踪执行完毕后出现“……Invalid   Pointer   opertion……”的错误提示,请教高手,这段程序错在那里???高分。 问题点数:50、回复次数:6Top

1 楼invalid(空心菜(Python是个好东东,大家多用用!))回复于 2002-03-08 22:51:52 得分 0

没看出来指针错误,学习。Top

2 楼invalid(空心菜(Python是个好东东,大家多用用!))回复于 2002-03-08 23:00:54 得分 30

看看我的抓屏发送代码比较一下吧。  
  //---------------------------------------------------------------------------  
  void   __fastcall   TMainForm::SSocketClientRead(TObject   *Sender,  
              TCustomWinSocket   *Socket)  
  {  
          AnsiString   s,s1;  
          Graphics::TBitmap   *   mybmp;  
  //         TJPEGImage   *jp   =   new   TJPEGImage();  
          TJPEGImage   *   myjpg;  
          s=Socket->ReceiveText();  
          if(s=="cap")  
          {  
                  try{  
                          MyStream=new   TMemoryStream();  
                          mybmp=new   Graphics::TBitmap();  
                          myjpg=new   TJPEGImage();  
                          GetScreen(mybmp,false);  
                          myjpg->Assign(mybmp);  
                          myjpg->CompressionQuality=QualityEdit->Text.ToIntDef(10);  
                          myjpg->SaveToStream(MyStream);  
                          myjpg->SaveToFile("c:\\123.jpg");  
                  }  
                  __finally  
                  {  
                          delete   myjpg;  
                          delete   mybmp;  
                  }  
                  MyStream->Position=0;  
                  s1=IntToStr(MyStream->Size);  
                  Socket->SendText(s1);  
          }  
          if(s=="ready")  
          {  
                  MyStream->Position=0;  
                  Socket->SendStream(MyStream);  
          }  
  }  
  Top

3 楼invalid(空心菜(Python是个好东东,大家多用用!))回复于 2002-03-08 23:03:25 得分 0

忘记删除MyStream;  
  加在:  
  __finally    
  {    
  delete   myjpg;    
  delete   mybmp;    
  delete   MyStream;  
  }    
  中吧。Top

4 楼knfy(苏格拉顶)回复于 2002-03-09 02:25:56 得分 20

是不是因为SendStream开启另外一个线程发送这个Stream的内容,而你删除了这个Stream的时候实际上还没有发送完,所以出现指针错误。(就是非法操作)Top

5 楼limaoxue(易往)回复于 2002-03-09 08:47:17 得分 0

invalid(空心菜)   这段程序我看过。你能解释一下myjpg的CompressionQuality属性吗?还有ToIntDef(10)的结果是什么?  
  Top

6 楼invalid(空心菜(Python是个好东东,大家多用用!))回复于 2002-03-09 08:58:59 得分 0

我上面的删除MyStream的代码是错误的。  
  我原来的程序没有删除,应该是有问题的。但是运行没有非法。我在调试一下再说吧。  
  ToIntDef(10);应该是AnsiString的方法。表示如果不能转换为数据,就等于10。例如:Edit的内容是abcd。它不能转换为整数,如果用ToInt就会有异常。如果用ToIntDef(10);就没有。它会用默认值10返回。  
  myjpg的CompressionQuality属性表示压缩的精度,压缩成jpg属于有损压缩。具体看看help吧。Top

相关问题

  • 这个程序那里错???
  • 在线送分!帮忙看看这个简单的程序那里有错误。
  • 这个程序那里错了?
  • 看看程序错在那里?
  • 请教,程序那里出错误了?
  • 这样程序错误在那里?
  • 这个程序错在那里.
  • 请帮我看看我的程序错在那里,为什么老是报错!急,高分在线等答复
  • 请教高手关于asp分页浏览的问题,我不知道我的程序错在那里?
  • 有上海浦东软件园的程序员?听说那里薪水不错。顶者接分。

关键词

  • socket
  • myjpg
  • mystream
  • mybmp
  • myjp
  • tointdef
  • tjpegimage
  • compressionquality
  • sendstream
  • 程序

得分解答快速导航

  • 帖主:limaoxue
  • invalid
  • knfy

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo