當前位置:首頁 » 文件管理 » 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

熱點內容
安卓手機減肥軟體哪個好 發布:2025-07-04 08:51:17 瀏覽:994
Oracle查看資料庫歸檔 發布:2025-07-04 08:44:53 瀏覽:606
950買什麼配置好 發布:2025-07-04 08:39:39 瀏覽:607
怎樣給應用加密 發布:2025-07-04 08:38:41 瀏覽:456
python的注釋符號 發布:2025-07-04 08:29:19 瀏覽:127
守望領域門禁密碼是多少 發布:2025-07-04 08:16:22 瀏覽:333
存儲晶元價格 發布:2025-07-04 08:16:20 瀏覽:356
大地球源碼 發布:2025-07-04 08:10:29 瀏覽:167
棋牌手游源碼 發布:2025-07-04 08:10:18 瀏覽:818
為啥編程廣告 發布:2025-07-04 07:30:01 瀏覽:570