请问各位达人——DEPHI7的自带压缩控件是哪个?谢谢!

解决方案 »

  1.   

    unit Compress;interfaceuses ZLib, StdCtrls, SysUtils, Classes, Controls;procedure CompressFile(Compress: Boolean; SourceFile, DestFile: String);implementationprocedure CompressIT(var SourceStream, DestStream: TMemoryStream; const CompressionLevel: TCompressionLevel);
    var
      CompressStream: TCompressionStream;
      Count: integer;
    Begin
      Count:= SourceStream.Size;
      DestStream.WriteBuffer(Count, SizeOf(Count));
      CompressStream:=TCompressionStream.Create(CompressionLevel, DestStream);
      Try
        SourceStream.SaveToStream(CompressStream);
      finally
        CompressStream.Free;
      end;
    end;procedure UnCompressIT(var SourceStream, DestStream: TMemoryStream);
    var
      UnCompressStream: TDecompressionStream;
      Buffer: PChar;
      Count: Integer;
    Begin
      SourceStream.ReadBuffer(Count, SizeOf(Count));
      GetMem(Buffer, Count);
      UnCompressStream := TDecompressionStream.Create(SourceStream);
      Try
        UnCompressStream.ReadBuffer(Buffer^, Count);
        DestStream.WriteBuffer(Buffer^, Count);
      finally
        FreeMem(Buffer);
        UnCompressStream.Free
      end;
    end;procedure CompressFile(Compress: Boolean; SourceFile, DestFile: String);
    var
      SourceStream: TMemoryStream;
      DestStream: TMemoryStream;
    begin
      SourceStream := TMemoryStream.Create;
      DestStream := TMemoryStream.Create;
      Try
        SourceStream.LoadFromFile(SourceFile);
        if Compress
        then CompressIT(SourceStream, DestStream, clDefault)
        else UnCompressIT(SourceStream, DestStream);
        DestStream.SaveToFile(DestFile);
      finally
        SourceStream.Free;
        DestStream.Free;
      end;
    end;end.
      

  2.   

    uses
      zlib;function TFormMain.PlaySnd():Boolean;
    //²¥·Å×ÊÔ´ÖеÄMidiÒôÀÖ
    var
    ResStream:TResourceStream;
      CpsBuf,DCpsBuf:Pointer;
      DeCompressSize:Integer;
    begin
    Result:=false;
    try
       ResStream:=TResourceStream.Create(hInstance,'Sound','Compress');
    GetMem(CpsBuf,ResStream.Size);
        ResStream.ReadBuffer(CpsBuf^,ResStream.Size);
        DecompressBuf(CpsBuf,ResStream.Size,0,DCpsBuf,DeCompressSize);
        if (PlaySound(DCpsBuf,hInstance,SND_ASYNC or SND_LOOP or SND_MEMORY)=true) then
         Result:=true;
      finally
       ResStream.Free;
      end;
    end;