⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zlib_delphi.txt

📁 Delphi Zlib 压缩解压缩算法
💻 TXT
字号:
不需要任何VCL元件,也不需任何DLL檔,
採用zlib來做檔案的壓縮與解壓!
感謝ccchen提供相關資料!

使用此兩個函數之前要uses zlib

uses zlib;
// 將SrcFile壓縮並存檔為DestFile
function CompressFile(const SrcFile,DestFile:String):Boolean;
const Level: TCompressionLevel=clDefault;
var
    des:TMemoryStream;
    sou:TMemoryStream;
    cs: TCompressionStream;
    Count: Integer;
    ret:boolean;
begin
    ret:=false;
    des:=TMemoryStream.Create;
    sou:= TMemoryStream.Create;
    cs:=TCompressionStream.Create(level,des);
    try
    sou.LoadFromFile(SrcFile);
    Count:=sou.Size;
    sou.SaveToStream(cs);
    cs.Free;

    sou.Clear;
    sou.WriteBuffer(Count, SizeOf(Count));
    sou.CopyFrom(des,0);

    des.Clear;

    des.Seek(0,soFromBeginning);
    des.CopyFrom(sou,0);
    des.SaveToFile(DestFile);
    ret:=true;
    finally
    des.Free;
    sou.Free;
    result:=ret;
    end;
end;
// 將SrcFile壓縮檔壓縮並存檔為DestFile
function DeCompressFile(const SrcFile,DestFile:String):boolean;
var
    des:TFileStream;
    sou:TMemoryStream;
    decs: TDeCompressionStream;
    Buffer: PChar;
    Count: integer;
    ret:boolean;
begin
    Buffer:=nil;
    ret:=false;
    des:=TFileStream.Create(DestFile,fmCreate);
    sou:= TMemoryStream.Create;
    decs:=nil;
    try
    sou.LoadFromFile(SrcFile);
    sou.Seek(0,soFromBeginning);
    sou.ReadBuffer(count,sizeof(count));
    GetMem(Buffer, Count);
    decs:=TDeCompressionStream.Create(sou);
    decs.ReadBuffer(Buffer^, Count);
    Des.WriteBuffer(Buffer^, Count);
    Des.Position := 0;
    ret:=true;
    finally
    FreeMem(Buffer);
    decs.Free;
    des.Free;
    sou.Free;
    result:=ret;
    end;
end;



~~~Delphi K.Top討論區站長~~~ 
 
------~~~Delphi K.Top討論區站長~~~
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -