首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

一个Zlib老有关问题了,卡住有段时间了,麻烦达人们帮忙解决

2012-02-25 
一个Zlib老问题了,卡住有段时间了,麻烦达人们帮忙解决.我在网上找了一个delphi压缩及解压的一段代码:use z

一个Zlib老问题了,卡住有段时间了,麻烦达人们帮忙解决.
我在网上找了一个delphi压缩及解压的一段代码:

use zlib;

procedure CompressIt(var CompressedStream: TMemoryStream; const CompressionLevel: TCompressionLevel);
// 参数是传递的流和压缩方式 
var 
  SourceStream: TCompressionStream; 
  DestStream: TMemoryStream; 
  Count: int64; //注意,此处修改了,原来是int 
begin
  //获得流的原始尺寸 
  Count := CompressedStream.Size; 
  DestStream := TMemoryStream.Create; 
  SourceStream := TCompressionStream.Create(CompressionLevel, DestStream); 
  try 
  //SourceStream中保存着原始的流 
  CompressedStream.SaveToStream(SourceStream); 
  //将原始流进行压缩, DestStream中保存着压缩后的流 
  SourceStream.Free; 
  CompressedStream.Clear; 
  //写入原始图像的尺寸 
  CompressedStream.WriteBuffer(Count, SizeOf(Count)); 
  //写入经过压缩的流 
  CompressedStream.CopyFrom(DestStream, 0); 
  finally 
  DestStream.Free; 
  end;
end; 


procedure UnCompressit(const CompressedStream: TMemoryStream; var UnCompressedStream: TMemoryStream);
//参数 压缩过的流,解压后的流
var 
  SourceStream: TDecompressionStream; 
  DestStream: TMemoryStream; 
  Buffer: PChar;
  Count: int64;
begin 
  //从被压缩的图像流中读出原始的尺寸 
  CompressedStream.ReadBuffer(Count, SizeOf(Count)); 
  //根据尺寸大小为将要读入的原始流分配内存块 
  GetMem(Buffer, Count); 
  DestStream := TMemoryStream.Create; 
  SourceStream := TDecompressionStream.Create(CompressedStream); 
  try 
  //将被压缩的流解压缩,然后存入 Buffer内存块中 
  SourceStream.ReadBuffer(Buffer^, Count); 
  //将原始流保存至 DestStream流中 
  DestStream.WriteBuffer(Buffer^, Count);
  DestStream.Position := 0; //复位流指针
  DestStream.Position := length(VER_INFO);
  //从 DestStream流中载入图像流
  UnCompressedStream.LoadFromStream(DestStream);
  finally 
  FreeMem(Buffer); 
  DestStream.Free; 
  end;
end; 

编绎它,报 VER_INFO 未定义,不知道达人们有什么建议没有? 应该use哪个unit?
我用的是D6.


[解决办法]
直接去掉DestStream.Position := length(VER_INFO);
试试正常否

热点排行