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.
  • 相关阅读:
    IIC/I2C从地址之7位,8位和10位详解
    ARM uxtw
    ARM(CM3)的汇编指令
    WZR/XZR ARM
    LDR r, label 和 LDR r, =label的区别
    Distinguishing between 32-bit and 64-bit A64 instructions
    03JavaScript程序设计修炼之道_2019-06-18_20-39-14_事件onload&onmouseover&out
    02-CSS基础与进阶-day6_2018-09-05-20-18-21
    02-CSS基础与进阶-day5_2018-09-03-22-10-39
    02-CSS基础与进阶-day5_2018-09-03-21-41-57
  • 原文地址:https://www.cnblogs.com/westsoft/p/10382626.html
Copyright © 2011-2022 走看看