找ZIP的压缩控件吧....我以前用过一个,挺好用,不过忘了名字

解决方案 »

  1.   

    谢谢大家!!!
    不过
    哪里找ZIP的压缩控件????????
      

  2.   

    Delphi自带有压缩包,但是,没有安装,
    我写了个调用程序,如果你需要,
    我的Email : [email protected]
      

  3.   

    用Delphi自带的ZLib吧!!!unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Buttons,Zlib;type
      TForm1 = class(TForm)
        BitBtn1: TBitBtn;
        BitBtn2: TBitBtn;
        OpenDialog1: TOpenDialog;
        Label1: TLabel;
        procedure BitBtn1Click(Sender: TObject);
        procedure BitBtn2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;procedure UnCompressStream(var MyStream: TMemoryStream);
    procedure CompressStream(var MyStream: TMemoryStream);implementationuses Unit2;{$R *.DFM}procedure TForm1.BitBtn1Click(Sender: TObject);
    var  MS: TMemoryStream;
          s:string;
    begin
      if not OpenDialog1.Execute then exit else s:=OpenDialog1.FileName;
      MS:= TMemoryStream.Create;
      ms.LoadFromFile(s);
      CompressStream(MS);
      s:=ChangeFileExt(s,'.zzz');
      ms.SaveToFile(s);
      ms.Free;end;procedure TForm1.BitBtn2Click(Sender: TObject);
    var  MS: TMemoryStream;
          s:string;
    begin
      if not OpenDialog1.Execute then exit else s:=OpenDialog1.FileName;
      MS:= TMemoryStream.Create;
      ms.LoadFromFile(s);
      UnCompressStream(MS);
      s:=ChangeFileExt(s,'.bak');
      ms.SaveToFile(s);
      ms.Free;end;procedure CompressStream(var MyStream: TMemoryStream);
    var
      SourceStream: TCompressionStream;
      DestStream: TMemoryStream;
      Count: Integer;
    Begin
      Count := MyStream.Size;
      DestStream := TMemoryStream.Create;
      SourceStream:=TCompressionStream.Create(clDefault, DestStream);
      Try
        MyStream.SaveToStream(SourceStream);
        SourceStream.Free;
        MYStream.Clear;
        MyStream.WriteBuffer(Count, SizeOf(Count));
        MyStream.CopyFrom(DestStream, 0);
        MyStream.Position := 0;
      finally
        DestStream.Free;
      end;
    end;procedure UnCompressStream(var MyStream: TMemoryStream);
    var
      SourceStream: TDecompressionStream;
      Buffer: PChar;
      Count: Integer;
    Begin
      MyStream.ReadBuffer(Count, SizeOf(Count));
      GetMem(Buffer, Count);
      SourceStream := TDecompressionStream.Create(MyStream);
      Try
        SourceStream.ReadBuffer(Buffer^, Count);
        MyStream.Clear;
        MyStream.WriteBuffer(Buffer^, Count);
        MyStream.Position := 0;
      finally
        FreeMem(Buffer);
      end;
    end;end.end.这个Demo可以把myfile.txt压成myfile.zzz,可以对myfile.zzz还原为myfile.bak
    关于目录压缩,看来只有编历目录一个文件一个文件来了,当然,恐怕要设计自己的一种
    文件格式,以保存相关信息了.
    祝你好运!
      

  4.   

    csdn的软件频道中就有一个zip控件 xceedzip ,ocx的
      

  5.   

    谢谢大家!问题解决了!
    没想到搞出来的压缩率比WINZIP7还高!!!
    分数给大家了,贴也该结了...