當前位置:首頁 » 文件管理 » delphizip解壓

delphizip解壓

發布時間: 2022-10-24 11:32:52

① delphi的VCLZip控制項的解壓問題

ziper.DoAll := True;
ziper.OverwriteMode := Always;
ziper.RelativePaths:=true;//是否保持目錄結構
ziper.AddDirEntriesOnRecurse:=true;
ziper.RecreateDirs:=true;//創建目錄

加上這幾句應該就行了。
vclzip在delphi2010中是無法使用的,在d7中可以正常使用。如果想在d2010中使用,建議在d7下把這些函數封裝成dll,在2010中調用即可。

② 誰會用delphi寫解壓程序

delphi 7的話用第三方的vclzip組件,可以方便實現解壓,很強大,也很穩定,例子也很多。
xe 自帶有zip函數。網上也有vclzip for xe 的版本,不過是windows下的。
如果需求不多的話,都夠用了。

③ 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中用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 怎麼來壓縮文件

使用時,需要Zlib.pas和 Zlibconst.pas兩個單元文件,這兩個文件保存在 Delphi 5.0安裝光碟上
InfoExtrasZlib目錄下,此外,在 InfoExtrasZlibObj目錄中還保存了 Zlib.pas單元引用的
Obj文件,把這個目錄拷貝到delphi的lib下,即可。可以適當的改動比如增加目錄壓縮和分文件壓縮,其實就是在文件流前面增加一部分描述結構就是,不多說。使用
時,還要use zlib單元。 兩個函數如下:

procere CompressIt(var CompressedStream: TMemoryStream; const CompressionLevel: TCompressionLevel);
// 參數是傳遞的流和壓縮方式
var
SourceStream: TCompressionStream;
DestStream: TMemoryStream;
Count: int64; //注意,此處修改了,原來是int
begin
//獲得流的原始尺寸
Count := CompressedStream.Size;
DestStream := TMemoryStream.Create;
SourceStream := TCompressionStream.Create(CompressionLevel, DestStream);
try
//SourceStream中保存著原始的流
CompressedStream.SaveToStream(SourceStream);
//將原始流進行壓縮, DestStream中保存著壓縮後的流
SourceStream.Free;
CompressedStream.Clear;
//寫入原始圖像的尺寸
CompressedStream.WriteBuffer(Count, SizeOf(Count));
//寫入經過壓縮的流
CompressedStream.CopyFrom(DestStream, 0);
finally
DestStream.Free;
end;
end;

procere UnCompressit(const CompressedStream: TMemoryStream; var UnCompressedStream: TMemoryStream);
//參數 壓縮過的流,解壓後的流
var
SourceStream: TDecompressionStream;
DestStream: TMemoryStream;
Buffer: PChar;
Count: int64;
begin
//從被壓縮的圖像流中讀出原始的尺寸
CompressedStream.ReadBuffer(Count, SizeOf(Count));
//根據尺寸大小為將要讀入的原始流分配內存塊
GetMem(Buffer, Count);
DestStream := TMemoryStream.Create;
SourceStream := TDecompressionStream.Create(CompressedStream);
try
//將被壓縮的流解壓縮,然後存入 Buffer內存塊中
SourceStream.ReadBuffer(Buffer^, Count);
//將原始流保存至 DestStream流中
DestStream.WriteBuffer(Buffer^, Count);
DestStream.Position := 0; //復位流指針
DestStream.Position := length(VER_INFO);
//從DestStream流中載入圖像流
UnCompressedStream.LoadFromStream(DestStream);
finally
FreeMem(Buffer);
DestStream.Free;
end;
end;

使用的例子如下:
procere TForm1.Button5Click(Sender: TObject);
//把指定文件壓縮然後保存為另外一個壓縮包,
//呵呵,我使用的時候是把後綴改成cab,可以唬一些人吧?
var
SM: TMemoryStream;
begin
if OpenDialog1.Execute then
begin
if SaveDialog1.Execute then
begin
SM := TMemoryStream.Create;
try
Sm.LoadFromFile(OpenDialog1.FileName);
SM.Position := 0;
Compressit(sm, clDefault);
sm.SaveToFile(SaveDialog1.FileName);
finally
SM.Free;
end;
end;
end;
end;

procere TForm1.BitBtn2Click(Sender: TObject);
//把指定的壓縮包解成原來的文件。
var
SM, DM: TMemoryStream;
begin
if OpenDialog1.Execute then
begin
if SaveDialog1.Execute then
begin
SM := TMemoryStream.Create;
DM := TMemoryStream.Create;
try
Sm.LoadFromFile(OpenDialog1.FileName);
SM.Position := 0;
UnCompressit(sm, dm);
dm.Position := 0;
dm.SaveToFile(SaveDialog1.FileName);
finally
SM.Free;
DM.Free;
end;
end;
end;
end;

⑥ 請教delphi是否有壓縮和解壓字元串函數

delphi 內置有 zlib 單元(高版本為 system.zlb),uses 該單元後,可以使用其中的兩個功能函數來完成,以下是示例:


procereTForm1.Button1Click(Sender:TObject);
var
tb:TBytes;
s:string;
begin
tb:=ZCompressStr(Edit1.Text);
s:=ZDecompressStr(tb);
ShowMessage('解壓後的字元串:'+s);
end;


運行截圖:


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

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

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

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

⑧ delphi XE 10 解壓壓縮文件

沒有的,可以在前端要求加個判斷格式,只有ZIP的才行。或都把.rar的自己轉換成zip

⑨ Delphi中如何執行ZIP文件謝謝!

前提條件:你必須裝有
WinZip
or
WinRAR
等解壓縮軟體,
並且文件已經關聯)即可使用:
樓上兄弟說的
ShellExecute
(記得
use
ShellApi
先)~

⑩ 請教delphi是否有壓縮和解壓字元串函數

有的,在zlib單元有
ZCompressStr:壓縮字元串,傳人字元串,返回TBytes;
ZDecompressStr:解壓字元串,傳人TBytes,返回字元串;
具體用法自己查一下

熱點內容
rc4c語言實現 發布:2024-10-07 10:08:34 瀏覽:407
為什麼steam每天登錄都要輸密碼 發布:2024-10-07 10:08:33 瀏覽:436
電腦軟體連接不到伺服器怎麼解決 發布:2024-10-07 10:04:07 瀏覽:923
pubg如何換伺服器圖解 發布:2024-10-07 10:04:06 瀏覽:320
androidstudio異常 發布:2024-10-07 09:50:48 瀏覽:471
視頻緩存轉mp4 發布:2024-10-07 09:35:37 瀏覽:27
Java的腳本語言有哪些 發布:2024-10-07 09:27:43 瀏覽:876
如何使用香港伺服器 發布:2024-10-07 09:01:37 瀏覽:916
對戰平台搭建cs伺服器 發布:2024-10-07 09:00:16 瀏覽:528
安卓游戲在哪個文件裡面改數據 發布:2024-10-07 08:48:50 瀏覽:789