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.
  • 相关阅读:
    基础知识记录
    不同数据库'查询第几行到第几行记录'脚本的区别
    visual studio自动生成的私有内部字段变量以_为前缀
    ASP.NET Core 集成Prometheus+grafana
    netcore命令行运行程序
    RabbitMQ使用建议
    解决Pg新增数据主键冲突
    .Net Core调用第三方WebService
    .Net Core调用oracle存储过程
    call,apply,bind使用区别
  • 原文地址:https://www.cnblogs.com/westsoft/p/10382626.html
Copyright © 2011-2022 走看看