各位大虾好,我想用一个内存流去读取一个已有值的文件流中了部份内容,因为文件流中的那部份内容进行了ZLIB压缩,
但我create内存流的时候总是返回空值,读取后句柄还是空的请哪位大虾指教一下。
inS:TMemoryStream;
begin
Stream.Seek (position+4, 0);
Stream.Read (imginfo, sizeof(TWMImageInfo)+FOffset);
FX[index]:=ImgInfo.px;
FY[Index]:=ImgInfo.py;
lsDib.Width := imginfo.Width lsDib.Height := imginfo.Height;
num:=imginfo.Width * imgInfo.Height * 2; ins:=TMemoryStream.Create; //这里执行后结果为()空。无句柄
ins.CopyFrom(stream,num);//这里能读取,但ins还是为();
ins.Seek(0,0);
DBits := lsDib.PBits;
ins.Read (DBits^, num); // Stream.Read (DBits^, imginfo.Width * imgInfo.Height * 2); //FBytesPerPixels: 1(256) 2(16位) 4 8
原来的语句是上面这句。我现在想做的是把DBits的内容读到流中进行ZLIB解压,现在我的流变量用在TDecompressionStream.Create中好像就会越界,跟没初始化一样。请各位帮下忙,谢谢!
但我create内存流的时候总是返回空值,读取后句柄还是空的请哪位大虾指教一下。
inS:TMemoryStream;
begin
Stream.Seek (position+4, 0);
Stream.Read (imginfo, sizeof(TWMImageInfo)+FOffset);
FX[index]:=ImgInfo.px;
FY[Index]:=ImgInfo.py;
lsDib.Width := imginfo.Width lsDib.Height := imginfo.Height;
num:=imginfo.Width * imgInfo.Height * 2; ins:=TMemoryStream.Create; //这里执行后结果为()空。无句柄
ins.CopyFrom(stream,num);//这里能读取,但ins还是为();
ins.Seek(0,0);
DBits := lsDib.PBits;
ins.Read (DBits^, num); // Stream.Read (DBits^, imginfo.Width * imgInfo.Height * 2); //FBytesPerPixels: 1(256) 2(16位) 4 8
原来的语句是上面这句。我现在想做的是把DBits的内容读到流中进行ZLIB解压,现在我的流变量用在TDecompressionStream.Create中好像就会越界,跟没初始化一样。请各位帮下忙,谢谢!
解决方案 »
- 将C++代码转换成相应的Delphi代码
- 如何为串口通讯增加新的波特率
- 急,救命呀!利用webbrowser浏览网页,怎样运行frmae中的javascript?
- cxgrid里如何通过代码,根据不同条件,控制同一列的不同行的可编辑属性,也就是Editing,Readonly属性
- 大虾看看这个问题
- delphi中的指针问题
- 一个DCOMConnection 的连接应用服务器的问题
- 大家请给点看法,关于TComponenet的虚拟构造方法
- 紧急求救(delphi保存内存流的问题)(在线等待)
- 如何调用winapi函数
- 如何设置ReportBuilder 里的ppDBtext 为横向显示,在线等待..
- 谁对东进语音卡比较熟悉
它其实是建立内存空间,看到()都是正常的(它就是这么表示的)
真想知道它是怎么工作的,去研究它实现的源码吧至于越界问题,就读取长度超出了你的数据长度