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.
  • 相关阅读:
    aspx,ascx和ashx使用小结
    修改CKFinder上传路径
    【python】如何在某.py文件中调用其他.py内的函数
    SpringMVC+hibernate4事务处理
    Hibernate执行原生SQL返回List<Map>类型结果集
    fastjson对Date的处理
    fastjson 的简单说明及使用
    字符串作为freemarker模板的简单实现例子
    Hibernate SQL 查询
    Spring整合Hibernate,Druid(Maven)
  • 原文地址:https://www.cnblogs.com/westsoft/p/10382626.html
Copyright © 2011-2022 走看看