zoukankan      html  css  js  c++  java
  • delphi压缩与解压_不需要特别的控件

    unit unzip;
    
    
    
    interface
    
    
    
    uses
    
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    
      Dialogs, StdCtrls;
    
    
    
    type
    
      TForm1 = class(TForm)
    
        Button1: TButton;
    
        Button2: TButton;
    
        procedure Button1Click(Sender: TObject);
    
        procedure Button2Click(Sender: TObject);
    
      private
    
        { Private declarations }
    
      public
    
        { Public declarations }
    
      end;
    
    
    
    var
    
      Form1: TForm1;
    
    
    
    implementation
    
    
    
    {$R *.dfm}
    
    
    
    uses Zlib;
    
    //压缩函数
    
    procedure Zip(var fs: TMemoryStream);
    
    var
    
      cs: TCompressionStream;
    
      ms: TMemoryStream;
    
      num: Integer;
    
    begin
    
      if not(Assigned(fs) and (fs.Size>0)) then Exit;
    
    
    
        num := fs.Size;
    
        ms := TMemoryStream.Create;
    
        cs := TCompressionStream.Create(clMax, ms);
    
      try
    
        fs.SaveToStream(cs);
    
        cs.Free;
    
        //ms.Position := 0;
    
        fs.Clear;
    
        fs.WriteBuffer(num, sizeof(num));
    
        fs.CopyFrom(ms, 0);
    
      finally
    
        ms.Free;
    
      end;
    
    end;
    
    
    
    //解压函数
    
    procedure UnZip2(var fs: Tmemorystream);
    
    var
    
      ds: TDecompressionStream;
    
      ms: TMemoryStream;
    
      num: Integer;
    
    begin
    
      if not(Assigned(fs) and (fs.Size>0)) then Exit;
    
    
    
      fs.Position := 0;
    
      fs.ReadBuffer(num,sizeof(num));
    
      ms := TMemoryStream.Create;
    
      ds := TDecompressionStream.Create(fs);
    
      try
    
        ms.SetSize(num);
    
        ds.Read(ms.Memory^, num);
    
        //ms.Position := 0;
    
        fs.Clear;
    
        fs.CopyFrom(ms, 0);
    
      finally
    
        ds.Free;
    
        ms.Free;
    
      end;
    
    end;
    
    //压缩测试
    
    procedure TForm1.Button1Click(Sender: TObject);
    
    var
    
      ms: TMemoryStream;
    
    begin
    
    ms := TMemoryStream.Create;
    
      ms.LoadFromFile('D:delphiszcb.mdb');
    
      Zip(ms);
    
      ms.SaveToFile('D:delphiszcb.zip');
    
    end;
    
    
    
    //解压测试
    
    procedure TForm1.Button2Click(Sender: TObject);
    
    var
    
      ms: TMemoryStream;
    
    begin
    
      ms := TMemoryStream.Create;
    
      ms.LoadFromFile('D:delphiszcb.zip');
    
      UnZip2(ms);
    
      ms.SaveToFile('D:delphiszcb2.mdb');
    
    end;
    
    
    
    end.
  • 相关阅读:
    电商总结(六)系统容量预估
    Nginx 和 IIS 实现动静分离
    聊一聊PV和并发
    RabbitMQ学习系列(四): 几种Exchange 模式
    RabbitMQ学习系列(三): C# 如何使用 RabbitMQ
    RabbitMQ学习系列(二): RabbitMQ安装与配置
    RabbitMQ学习系列(一): 介绍
    推荐:《部落 一呼百应的力量》
    Solr学习总结(八)IK 中文分词的配置和使用
    常用的数据统计Sql 总结
  • 原文地址:https://www.cnblogs.com/westsoft/p/10382626.html
Copyright © 2011-2022 走看看