当前位置:首页 » 文件管理 » delphi7z解压

delphi7z解压

发布时间: 2023-05-03 00:38:39

‘壹’ Delphi 解压文件

很简单吧,先不带密码尝试解压一次或者获取信息一次,如果失败了就说明有密码咯。
代码:
procere TForm1.btn1Click(Sender: TObject);
begin
UnZip1.OnBadPassword:=UnZip1BadPassword;
UnZip1.ArchiveStream:=TFileStream.Create('F:\古书.zip',fmOpenRead);
if UnZip1.CheckArchive then
begin
showmessage('No Pass');
UnZip1.ArchiveStream.Free;
exit;
//无密码,不解压
end;
//解压过程,略。
UnZip1.ArchiveStream.Free;
end;

procere TForm1.UnZip1BadPassword(Sender: TObject; FileIndex: Integer;
var NewPassword: String);
begin
NewPassword:='123456'; //123456是真实的密码,这一步可以省
end;

‘贰’ 如何使用delphi调用7zip压缩解压缩

e 解压压缩文件到当前目录

忽略路径解压压缩的文件到当前或指定的文件夹。此命令行对应的是 压缩文件管理 命令 解压到指定文件夹 并在 解压路径和选项对话框 “不解压路径”的选项是启用时。

例子:
在当前文件夹,从全部的 RAR 压缩文件解压所有的 *.doc 文件到当前文件夹
WinRAR e *.rar *.doc

‘叁’ Delphi中如何执行ZIP文件谢谢!

前提条件:你必须装有
WinZip
or
WinRAR
等解压缩软件,
并且文件已经关联)即可使用:
楼上兄弟说的
ShellExecute
(记得
use
ShellApi
先)~

‘肆’ 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;

‘伍’ 7Z的其他工具

WinRAR(解压7z)
WinRAR是一款功能强大的压缩包管理器,它是档案工具RAR 在 Windows环境下的图形界面。该软件可用于备份数据,缩减电子邮件附件的大小,解压缩从 Internet 上下载的 RAR、ZIP 2.0 及其它文件,并且可以新建 RAR 及 ZIP 格式的文件。
WinZip(解压7z)
WinZip 是一款功能强大并且易用的压缩实用程序, 支持 ZIP、7z、CAB、TAR、GZIP、MIME, 以及更多格式的压缩文件。 其特点是紧密地与 Windows 资源管理器拖放集成, 不用留开资源管理器而进行压缩/解压缩。 包括 WinZip 向导 和 WinZip 自解压缩器个人版本。 被 PC Magazine 杂志授予最佳精品实用程序大奖、被Vector Capital收购的Winzip。新版支持计划任务和视图风格切换。
好压(压缩/解压7z)
好压(Haozip)对 ZIP、7Z 和 TAR 格式完全支持: 支持zip,7z和tar格式的打包与解压,并针对每种格式开放自由的算法配置;支持 RAR、ARJ、CAB、LZH、ACE、GZ、UUE、BZ2、JAR、ISO 等多达44种算法和类型文件的解压;针对7z格式,独创了7z文件注释功能,并与同类软件保持良好的兼容性;支持win2000以上全部32/64位系统,并且完美支持windows 7。
快压(压缩/解压7z)
快压(kuaizip)是一款免费、方便、快速的压缩和解压缩利器,拥有一流的压缩技术,是国内第一款具备自主压缩格式的软件。快压自身的压缩格式 KZ 具有超大的压缩比和超快的压缩解压速度。同时,快压还兼容RAR,ZIP 和 7Z 等40余种压缩文件。
360压缩(压缩/解压7z)
360压缩是新一代的压缩软件,永久免费。360压缩相比传统压缩软件更快更轻巧,支持解压主流的rar、zip、7z、iso等多达39种压缩文件。360压缩内置云安全引擎,可以检测木马,更安全。大幅简化了传统软件的繁琐操作,还改进了超过20项的使用细节,拥有全新的界面。360压缩的主要特点是快速轻巧、兼容性好、更安全、更漂亮,而且是永久免费的。
WinMount(压缩/解压7z)
WinMount是一款功能强大的Windows小工具,具备压缩软件的压缩、解压、浏览等功能,也具备挂载DVD,CD,虚拟机硬盘镜像的功能。WinMount最大特色在于,首创读取压缩包新理念-Mount:直接将压缩包Mount到虚拟盘,无需解压,打破压缩包解压才能使用的传统。
Alzip(解压7z)
这是一个由韩国人做的压缩工具,DELPHI做的,可以解压缩几乎所有常用压缩格式,可以压缩文件为 ZIP,CAB,JAR,TAR。LH,等7-8种格式。速度快,支持右键,支持自定义分盘压缩。
PeaZip(压缩/解压7z)
是可以在Microsoft Windows或Linux作业系统中执行的文件管理器及压缩程式。他除了支援自己原生的PEA压缩格式(主要功能为压缩、分档、弹性地认证加密、整合式检查架构)外,还有支援其他的主流压缩格式,包括7z格式。不过有特别着重在处理开放授权的压缩格式上。这套压缩软体主要使用Lazarus开发工具以Free Pascal语言进行撰写。是以GNU Lesser General Public License发布的自由软体。
Universal Extractor(解压7z)
正如其名,Universal Extractor 是一个可以从任何类型的存档文件中提取文件的程序,无论是简单的 ZIP 文件、安装程序(如 Wise 或 NSIS),还是 Windows 安装程序 (.msi) 包。
Squeez(压缩/解压7z)
Squeez是一个功能强大的压缩软件。支持 SQX,ZIP,CAB,RAR,ACE, 7-ZIP,ARJ,LHA等等众多压缩格式的压缩和解压缩。 Squeez具有强大的资源管理和文件预览功能, 甚至可以直接播放压缩包内的多媒体文件。 Squeez 是一个超快速的文件压缩应用程序, 支持 13 种不同的压缩算法。 软件可以读写如下格式的压缩文件: SQX, ARJ, BZIP, CAB, GZIP, ZIP, LZH, JAR, TAR, UUE, RAR, ACE 和 7z - 并且不需要其它附加软件的支持。
LZArc(压缩/解压7z)
具有压缩文件格式转换功能的压缩工具-IZArc。可通过鼠标右键菜单来进行操作,跟WinRAR、WinZip的操作有点类似。它的独特功能有:可转换多种压缩档格式(例如:将RAR转ZIP)、解压缩文件密码、可以建立自我解压缩文件(EXE)。主要支持的格式:7-ZIP, A, ACE, ARC, ARJ, B64, BH, BIN, BZ2, BZA, C2D, CAB, CDI, CPIO, DEB, ENC, GCA, GZ, GZA, HA, IMG, ISO, JAR, LHA, LIB, LZH, MDF, MBF, MIM, NRG, PAK, PDI, PK3, RAR, RPM, TAR, TAZ, TBZ, TGZ, TZ, UUE, WAR, XXE, YZ1, Z, ZIP, ZOO。
TUGZip(压缩/解压7z)
TUGZip是一个完全免费的文件压缩管理工具。拥有极具亲和力的界面,支持众多的文件格式。你可以创建或打开7-ZIP、BZ2、CAB、LHA(LZH)、SQX、TAR、TGZ、YZ1、ZIP、ACE、ARJ、BZ2、CAB、CPIO、DEB、GCA、GZ、IMP、LIB、RAR、RPM、SQX、TBZ、TAZ等文件格式。支持创建和打开自解压文件,并附带一个脚本工具,通过它可以实现自动备份。支持多种加密模式(DES, Triple DES等)。支持Zip64算法。支持鼠标拖拽和自动在线升级。具备同类软件的所有基本功能:添加、删除、改名、查看、数据校验、附言、病毒扫描等等。
GPS-通用打包工具外壳(压缩/解压7z)
该工具为绿色软件, 支持多种压缩格式的打包和解包。 除了支持常见的RAR、ZIP、CAB、7Z、TAR、ACE等格式外, 还支持UHA、RK这样的高压缩比格式, 甚至最恐怖的PAQ8JC格式。
FreeArc(解压7z)
FreeArc 集成了多种压缩算法(LZMA/PPMD/Multimedia compression)和过滤器(exe/dict/delta data filters),依据文件类型选择最佳的压缩算法,支持数据恢复(Recovery Record), 支持AES+Twofish+Serpent算法加密。 最新的MaximumCompression的评测表明FreeArc v0.40在压缩率和压缩速度方面,已经全面赶超WinRAR。多数情况下比7z体积小。

‘陆’ 关于 Delphi 中压缩流和解压流的应用

软件开发者不免都要遇到压缩数据的问题!经常使用Delphi的朋友都知道 它为我们提供了两个流类(TCompressionStream和TDepressionStream)来完成数据的压缩和解压缩 但美中不足的是 该流在Delphi 的帮助备誉中没有详细的说明 使得它们在使用起来有一定得困难 其实在Delphi系统中提供了这两个类的源代码和库 保存在Delphi 光盘的InfoExtraslib Src和InfoExtraslibObj目录中(其中OBJ目录中保存的是库 Src目录中保存的是源代码 感兴趣的朋友可以看看) 本人在使用的过程中 对它们有了一定的了解

一 类的说明

基类 TCustomZlibStream 类TCustomZlibStream 是类TCompressionStream和TDepressionStream 类的基类 它主要有一个属性 OnProgress 在类进行压缩或解压缩的过程中会发生这个的事件 它的定义如下

Procere OnProgress (Sender: TObject); dynamic; 压缩类TCompressionStream 类TCompressionStream除了继承了基类的 OnProgress 属性外 又增加了一个属性 CompressionRate 它的定义如下

Property CompressionRate: Single read GetCompressionRate;通过这个属性 可以得到压缩比 它的几个个重要的方法定义如下

Constructor TCompressionStream Create (CompressionLevel: TCompressionLevel; Dest: TStream);其中 TpressionLevel(压缩类型) 它由如仿中段下几个定义

① clNone 不进行数据压缩

② clFastest 进行快速压缩 牺牲压缩效率

③ clDefault 进行正常压缩

④ clMax 进行最大化压缩 牺牲速度

Dest 目的流 用于存放压缩过的数据

Function TCompressionStream Write (const Buffer; Count: Longint): Longint;其中 Buffer 需要压缩的数据

Count: 需要压缩的数据的字节数

函数返回写入流的字节数

压缩类TCompressionStream的数据只能是写入的 如果试图从其内部读取数据 将发生一个 Error 异常 需要压缩的数据通过方法 Write写入流中 在写入的过程中就被压缩 并保存在由构造函数提供的内存流(TmemoryStream)中 同时触发 OnProcess 事件

解压缩类 TDepressionStream :和压缩类TpressionStream 相反 它的数据是只能读出的 如果试培坦图往其内部写数据 将发生一个 Error 异常 它的几个重要方法定义如下

构造函数 Constructor Create(Source: TStream);

其中 Source 是保存着压缩数据的流

Function Read(var Buffer; Count: Longint): Longint;数据读出函数 Buffer 存数据缓冲区

Count: 缓冲区的大小

函数返回读出的字节数

数据在读出的过程中 数据被解压缩 并触发 OnProcess 事件

二 类的使用

通过类TCompressionStream和TdepressionStream的配合使用 我们可以非常方便地完成数据的压缩和解压 下面就是本人在编写屏幕拷贝程序中的使用例子

Procere TClientForm GetScreen;VarSourceDC DestDC:HDC;Bhandle:HBITMAP;BitMap:TBitMap;BmpStream Deststream:TMemoryStream;SourceStream:TCompressionStream;Count:Integer;BeginSourceDC:=CreateDC( display nil);{得到屏幕的 DC}DestDC:=CreateCompatibleDC(SourceDC);{建立临时 DC}Bhandle:=CreateCompatibleBitmap(SourceDC Screen Width Screen Height);{建立位图}SelectObject(DestDC Bhandle);{选择位图DC}BitBlt(DestDC Screen Width Screen Height SourceDC SRCCOPY);{拷贝整个屏幕}BitMap:=TBitMap Create;BitMap Handle := Bhandle;{保存屏幕位图到 BitMap中}BmpStream:=TMemoryStream Create;BitMap SaveToStream(BmpStream);{建立位图数据的内存流}count:=BmpStream Size;{保存位图的大小}DestStream:=TMemoryStream Create;{目标流 保存压缩数据}SourceStream:=TCompressionStream Create(clMax DestStream);{构建压缩流 采用最大化压缩 并保存到目标流中}tryBmpStream SaveToStream(SourceStream);{压缩位图流}SourceStream Free;{完成压缩 释放压缩流}BmpStream Clear;{清空原来位图流}BmpStream WriteBuffer(Count Sizeof(Count));{将原来位图的大小保存到新的位图流中 以便使用}BmpStream CopyFrom(DestStream );{将压缩数据附加到新的位图流后面}BmpStream Position := ;NMStrm PostIt(BmpStream);{发送位图流}finallyDestStream Free;BmpStream Destroy ;BitMap Destroy;DeleteDC(SourceDC);ReleaseDC(Bhandle SourceDC);end;{释放有关资源}End;该过程得到整个屏幕的图象拷贝 并利用压缩流SourceStream和内存流 Deststream将位图压缩 并重新把位图大小和压缩数据流保存到位图流中 发送出去 发送位图大小的目的是在解压前来确定需要的内存空间

lishixin/Article/program/Delphi/201311/24929

‘柒’ 谁会用delphi写解压程序(zip文件)

呵呵,如不雅安装了winzip这个软件,可以用它的dll来实现:wzcab3.dllwz32._initunzipunzip_._initCAB_.dllZAMEntryPoint1呵呵,这个由kingron供给的。

‘捌’ Delphi 解压文件的奇怪错误

可能是第一次使用完文件后,文件句柄还被占用,尝试使用完后释放一下文件.

热点内容
安卓手机摄像头连接云存储 发布:2025-05-11 05:10:52 浏览:34
瑞虎三都有哪些配置 发布:2025-05-11 05:05:08 浏览:950
mc非正版服务器怎么做 发布:2025-05-11 05:04:54 浏览:308
安卓手机九宫格忘记密码怎么解 发布:2025-05-11 05:00:30 浏览:595
安卓手机拼多多怎么解绑银行卡 发布:2025-05-11 05:00:25 浏览:686
校园网可以搭建服务器地址 发布:2025-05-11 04:54:40 浏览:785
noip算法 发布:2025-05-11 04:53:51 浏览:50
有什么我的世界服务器启动器 发布:2025-05-11 04:50:41 浏览:296
写shell脚本 发布:2025-05-11 04:37:41 浏览:935
电脑服务器打开有什么用 发布:2025-05-11 04:36:49 浏览:98