当前位置:首页 » 文件管理 » 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,返回字符串;
具体用法自己查一下

热点内容
如何使用香港服务器 发布:2024-10-07 09:01:37 浏览:915
对战平台搭建cs服务器 发布:2024-10-07 09:00:16 浏览:527
安卓游戏在哪个文件里面改数据 发布:2024-10-07 08:48:50 浏览:788
从ftp服务器下载的文件在哪里 发布:2024-10-07 08:44:41 浏览:820
android的音频播放器 发布:2024-10-07 08:28:46 浏览:370
c5哪个配置最值得买 发布:2024-10-07 08:27:21 浏览:593
sql全角转半角 发布:2024-10-07 08:25:00 浏览:781
公众服务器配置是什么 发布:2024-10-07 08:17:11 浏览:496
为什么服务器贵吗 发布:2024-10-07 08:16:37 浏览:643
为什么服务器的引导分区会损坏 发布:2024-10-07 07:54:07 浏览:674