zoukankan      html  css  js  c++  java
  • 流的压缩与解压缩

    uses Zlib; 
    //压缩 
    procedure DoCompress(var CompressedStream: TMemoryStream); 
    var 
      SourceStream: TCompressionStream; 
      DestStream: TMemoryStream; 
      Count: int64; 
    Begin 
      CompressedStream.Position := 0; 
      Count := CompressedStream.Size; 
      if Count=0 then     //错误 
        Exit; 
      DestStream := TMemoryStream.Create; 
      SourceStream:=TCompressionStream.Create(clMax, DestStream); 
      Try 
        CompressedStream.SaveToStream(SourceStream); 
        SourceStream.Free; 
        CompressedStream.Clear; 
        CompressedStream.WriteBuffer(Count, SizeOf(Count)); 
        CompressedStream.CopyFrom(DestStream, 0); 
      finally 
        DestStream.Free; 
      end; 
      CompressedStream.Position := 0; 
    end; 

    //解压缩 
    procedure DoUncompress(var UnCompressedStream: TMemoryStream); 
    var 
      Count: int64; 
      SourceStream: TDecompressionStream; 
      Buffer: pchar; 
    begin 
      UnCompressedStream.Position:=0; 
      UnCompressedStream.ReadBuffer(Count, sizeof(Count)); 
      if count<0 then 
      begin 
        UnCompressedStream.Position:=0; 
        exit; 
      end; 
      SourceStream := TDecompressionStream.Create(UnCompressedStream); 
      Getmem(Buffer, Count); 
      SourceStream.Read(Buffer^, Count); 
      freeandnil(SourceStream); 
      UnCompressedStream.Clear; 
      UnCompressedStream.WriteBuffer(Buffer^,Count); 
      UnCompressedStream.Position:=0; 
      freemem(Buffer); 
    end; 

  • 相关阅读:
    linux下文件结束符
    【转】跟我学Kafka之NIO通信机制
    【转】 详解Kafka生产者Producer配置
    【转】项目延期的⑦大因素
    (转)EOSIO开发(三)钱包、账户与账户权限之概念篇
    CentOS里alias命令
    (转)EOSIO开发(一)使用Docker构建本地环境
    Marathon自动扩缩容(marathon-lb-autoscale)
    (转)Springboot日志配置(超详细,推荐)
    Spring Boot下的lombok安装以及使用简介
  • 原文地址:https://www.cnblogs.com/yych/p/1901408.html
Copyright © 2011-2022 走看看