谁能给我解释下这几行代码?

时间:2021-01-30 10:02:28
var
        DecompressionStream     :TDecompressionStream;
        count, i        :integer;
        buf:pchar;
begin
        SFile:=TMemoryStream.Create;  
        Sfile.LoadFromFile('ab.dat');
        sfile.Read( count, sizeof(count) );

        getmem(buf,count);
        DecompressionStream:=TDecompressionStream.Create(sfile);
        //-------上面这行不知道怎么在BCB里面用??
        Decompressionstream.ReadBuffer(buf^,count);
        sfile.Clear ;
        sfile.WriteBuffer(buf^,count);
        sfile.position:=0;
        decompressionstream.free;
        freemem(buf);
        上面这段代码不知道做了些什么东西?有什么用?望大家解释一下

13 个解决方案

#1


应该是用 zlib 解压缩一个文件

#2


DecompressionStream:=TDecompressionStream.Create(sfile);
在BCB里面应该是
DecompressionStream=new TDecompressionStream(sfile);

#3


这个好像是PASCALLJ里面的结构一样,有BEGIN应该有END。
这个程序是将一个文件放入内存,然后再进行压缩。

#4


关键是不知道TDecompressionStream在BCB里面包含哪个头文件啊

#5


DecompressionStream是个什么对象? xpdavis(咕嘟) 说的应当对.
或者是加密吧?

#6


http://www.yesky.com/20030311/1656296.shtml

#7


谢谢 CKER提供的连接,在DELPHI6里面有个ZLIB。DCU的文件,DELPHI7里面还多了一个ZLIB。PAS文件,所以都能正常使用,但在BCB里面找不到ZLIB开头的任何文件,不知道在BCB里面怎么才能用这个类呢?

#8


关注,以前直接用过的,现在忘了。

#9


在工程加入ZLIB.PAS,编译产生.ojb .hpp,去除ZLIB.PAS,加入ZLIB.OBJ,#include "ZLIB.HPP"

#10


to qiuafa:
在编译ZLIB。PAS文件的时候,提示错误是:
File not found: 'deflate.obj'
现在还有很多一样的错误,只是后面的文件名不一样,
错误位置是在这几行上面:
{$IFDEF MSWINDOWS}
{$L deflate.obj}
{$L inflate.obj}
{$L inftrees.obj}
{$L trees.obj}
{$L adler32.obj}
{$L infblock.obj}
{$L infcodes.obj}
{$L infutil.obj}
{$L inffast.obj}
是从ZLIB。PAS文件里面拷贝出来的,但不管是在DELPHI目录也好,BCB目录也好都找不到这些文件,这是怎么会事?

#11


只要compile .pas,不要link.产生.obj .hpp即达到目的。
最后加入.obj,在link,如果link出错,那就表示还有相关的.pas也需要这样加入。


#12


to qiuafa:
你说的没错,在编译的时候缺少ZLibConst.PAS文件,我从DELPHI目录下拷过来,再编译的时候就出现了上面的那错误

#13


呵呵,那些文件都是开放源码的zlib源代码,编译得到的obj文件,delphi带的两个pas文件不过封装了一下罢了。
所以这个编译的时候比较麻烦,delphi并没有提供这些obj,一切都已经由dcu与编译过了。
但是bcb使用的时候没有zlib.pas生成的.hpp和obj是不行的。
所以你需要先从zlib编译得到这些obj才可以顺利地编译zlib.pas.比较麻烦,我手头没有delphi,没有这两个pas文件,不好试验。sorry

#1


应该是用 zlib 解压缩一个文件

#2


DecompressionStream:=TDecompressionStream.Create(sfile);
在BCB里面应该是
DecompressionStream=new TDecompressionStream(sfile);

#3


这个好像是PASCALLJ里面的结构一样,有BEGIN应该有END。
这个程序是将一个文件放入内存,然后再进行压缩。

#4


关键是不知道TDecompressionStream在BCB里面包含哪个头文件啊

#5


DecompressionStream是个什么对象? xpdavis(咕嘟) 说的应当对.
或者是加密吧?

#6


http://www.yesky.com/20030311/1656296.shtml

#7


谢谢 CKER提供的连接,在DELPHI6里面有个ZLIB。DCU的文件,DELPHI7里面还多了一个ZLIB。PAS文件,所以都能正常使用,但在BCB里面找不到ZLIB开头的任何文件,不知道在BCB里面怎么才能用这个类呢?

#8


关注,以前直接用过的,现在忘了。

#9


在工程加入ZLIB.PAS,编译产生.ojb .hpp,去除ZLIB.PAS,加入ZLIB.OBJ,#include "ZLIB.HPP"

#10


to qiuafa:
在编译ZLIB。PAS文件的时候,提示错误是:
File not found: 'deflate.obj'
现在还有很多一样的错误,只是后面的文件名不一样,
错误位置是在这几行上面:
{$IFDEF MSWINDOWS}
{$L deflate.obj}
{$L inflate.obj}
{$L inftrees.obj}
{$L trees.obj}
{$L adler32.obj}
{$L infblock.obj}
{$L infcodes.obj}
{$L infutil.obj}
{$L inffast.obj}
是从ZLIB。PAS文件里面拷贝出来的,但不管是在DELPHI目录也好,BCB目录也好都找不到这些文件,这是怎么会事?

#11


只要compile .pas,不要link.产生.obj .hpp即达到目的。
最后加入.obj,在link,如果link出错,那就表示还有相关的.pas也需要这样加入。


#12


to qiuafa:
你说的没错,在编译的时候缺少ZLibConst.PAS文件,我从DELPHI目录下拷过来,再编译的时候就出现了上面的那错误

#13


呵呵,那些文件都是开放源码的zlib源代码,编译得到的obj文件,delphi带的两个pas文件不过封装了一下罢了。
所以这个编译的时候比较麻烦,delphi并没有提供这些obj,一切都已经由dcu与编译过了。
但是bcb使用的时候没有zlib.pas生成的.hpp和obj是不行的。
所以你需要先从zlib编译得到这些obj才可以顺利地编译zlib.pas.比较麻烦,我手头没有delphi,没有这两个pas文件,不好试验。sorry