當前位置:首頁 » 文件管理 » delphi文件夾壓縮文件

delphi文件夾壓縮文件

發布時間: 2024-03-18 15:41:28

⑴ delphi中用zlib怎樣壓縮解壓

數據壓縮和解壓的示例代碼:

{壓縮流}
function CompressStream(ASrcStream: TStream; ALevel: TSfCompressionLevel): TStream;
var
SrcData,Buffer:Pointer;
BufSize:Integer;
begin
Buffer:=nil;
Result:=nil;
BufSize:=0;
GetMem(SrcData,ASrcStream.Size);
ASrcStream.Position:=0;
ASrcStream.Read(SrcData^,ASrcStream.Size);

try
try
SfCompressBuf(SrcData,ASrcStream.Size,Buffer,BufSize,ALevel);
except
on E:Exception do
SfRaiseException(E,'Exception raised in CompressStream call');
end;
finally
FreeMem(SrcData);
SrcData:=nil;
end;

//由於try...except塊中重引發了異常,所以在發生了異常的情況下,以下的代碼不會執行
Result:=TMemoryStream.Create;
Result.Write(Buffer^,BufSize);
FreeMem(Buffer);
end;

{解壓流}
function CompressStream(ASrcStream: TStream; ALevel: TSfCompressionLevel): TStream;
var
SrcData,Buffer:Pointer;
BufSize:Integer;
begin
Buffer:=nil;
Result:=nil;
BufSize:=0;
GetMem(SrcData,ASrcStream.Size);
ASrcStream.Position:=0;
ASrcStream.Read(SrcData^,ASrcStream.Size);

try
try
SfCompressBuf(SrcData,ASrcStream.Size,Buffer,BufSize,ALevel);
except
on E:Exception do
SfRaiseException(E,'Exception raised in CompressStream call');
end;
finally
FreeMem(SrcData);
SrcData:=nil;
end;

//由於try...except塊中重引發了異常,所以在發生了異常的情況下,以下的代碼不會執行
Result:=TMemoryStream.Create;
Result.Write(Buffer^,BufSize);
FreeMem(Buffer);
end;

{壓縮位元組數組}
function CompressBytes(ASrcBytes: TBytes; ALevel: TSfCompressionLevel): TBytes;
var
Buffer:Pointer;
BufSize:Integer;
begin
Buffer:=nil;
BufSize:=0;

try
SfCompressBuf(@ASrcBytes[0],Length(ASrcBytes),Buffer,BufSize,ALevel);
SetLength(Result,BufSize);
Move(Buffer^,Result[0],BufSize);
except
on E:Exception do
SfRaiseException(E,'Exception raised in CompressBytes call');
end;

//由於try...except塊中重引發了異常,所以在發生了異常的情況下,以下的代碼不會執行
FreeMem(Buffer);
end;

{解壓位元組數組}
function DecompressBytes(ASrcBytes: TBytes): TBytes;
var
Buffer:Pointer;
BufSize:Integer;
begin
Buffer:=nil;
BufSize:=0;

try
SfDecompressBuf(@ASrcBytes[0],Length(ASrcBytes),0,Buffer,BufSize);
SetLength(Result,BufSize);
Move(Buffer^,Result[0],BufSize);
except
on E:Exception do
SfRaiseException(E,'Exception raised in DecompressBytes call');
end;

//由於try...except塊中重引發了異常,所以在發生了異常的情況下,以下的代碼不會執行
FreeMem(Buffer);
end;

⑵ delphi解壓文件問題

呵呵,,我給你一個解決的辦法吧,看你的代碼就知道你是下載VCLZIP組件。。
建議你用VCLunzip組件:解壓代碼如下:
UnZip1.ZipName:='c:\Upx.zip';//zip所在目錄
UnZip1.ReadZip;
UnZip1.FilesList.Add('*.*');
UnZip1.FilesList.Add(UnZip1.Filename[UnZip1.Count-1] );
UnZip1.DoAll:=false;
UnZip1.DestDir:='c:\';//指定目錄
UnZip1.RecreateDirs := True;
UnZip1.RetainAttributes := True;
UnZip1.UnZip;

要設置解壓時替換原有的文件不彈出提示框,其實很簡單在OverwriteMode屬性設成Always就可以了!!

⑶ delphi 怎麼來壓縮文件

在 delphi 里有多種方式來壓縮文件:


1、直接調用系統的壓縮軟體,比如 winrar,用 ShellExecute / Winexec 執行命令行:


"C:/ProgramFiles/WinRAR/WinRAR.exe"a "d:c.rar""D:Music"


2、使用 delphi 提供的單元文件 zlib.pas 中相關的壓縮函數:


示例代碼:


//壓縮函數
procereZip(varfs:TMemoryStream);
var
cs:TCompressionStream;
ms:TMemoryStream;
num:Integer;
begin
ifnot(Assigned(fs)and(fs.Size>0))thenExit;

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;


3、使用專門的壓縮控制項,如VCLZip 等。

⑷ 如何使用delphi調用7zip壓縮解壓縮

e 解壓壓縮文件到當前目錄

忽略路徑解壓壓縮的文件到當前或指定的文件夾。此命令行對應的是 壓縮文件管理 命令 解壓到指定文件夾 並在 解壓路徑和選項對話框 「不解壓路徑」的選項是啟用時。

例子:
在當前文件夾,從全部的 RAR 壓縮文件解壓所有的 *.doc 文件到當前文件夾
WinRAR e *.rar *.doc

熱點內容
eoe源碼 發布:2025-01-19 15:04:40 瀏覽:965
軟體如何部署節省伺服器資源 發布:2025-01-19 14:57:48 瀏覽:680
編程m28 發布:2025-01-19 14:55:20 瀏覽:336
藍月傳奇免費輔助腳本 發布:2025-01-19 14:55:18 瀏覽:543
AI時代是什麼牌子的密碼鎖 發布:2025-01-19 14:46:06 瀏覽:34
軟體工程配置圖是什麼 發布:2025-01-19 14:41:04 瀏覽:373
游戲下載配置失敗怎麼解決 發布:2025-01-19 14:39:36 瀏覽:559
微信上的電影怎麼下載或緩存 發布:2025-01-19 14:30:57 瀏覽:826
如何在外網訪問伺服器 發布:2025-01-19 14:29:45 瀏覽:380
百度重定向腳本 發布:2025-01-19 14:29:36 瀏覽:428