导航:首页 > 文件处理 > delphi文件夹压缩

delphi文件夹压缩

发布时间:2022-04-17 08:11:47

㈠ 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调用7zip压缩解压缩

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

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

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

㈣ 怎么用Delphi7实现文件夹的压缩

var dbpathname:string;
AccessEngine :DBEngine;
begin
AccessEngine:=CoDBEngine.Create;
with dm_zt.Query_ZhTao do
begin
dbpathname:=fieldbyname('db_pathname').asstring;
end;
if FileExists(dbpathname) then
begin
try
try
AccessEngine:=CoDbEngine.Create;
if FileExists(extractfilepath(dbpathname)+'tempback.dat') then

deletefile(extractfilepath(dbpathname)+'tempback.dat')
else
begin
AccessEngine.CompactDatabase(dbpathname,extractfilepath(dbpathname)+'tempback.dat','',0,';pwd=B102901010816');
DeleteFile(dbpathname);
renameFile(extractfilepath(dbpathname)+'tempback.dat',dbpathname);
end;
except
ShowMessage('压缩失败');
// raise;
end;
finally
ShowMessage('压缩成功');

end;

㈤ 在delphi中如何实现多文件或文件夹压缩在一个压缩包中,要详解。

你说的这个压缩包,是指像rar那样的文件压缩吗?
如果是,请用winexec调用 rar的 dos命令。
如:
rar.exe a C:\test d:\test.rar
你要把 rar.exe 放在项目文件夹

㈥ delphi XE 10 解压压缩文件

没有的,可以在前端要求加个判断格式,只有ZIP的才行。或都把.rar的自己转换成zip

㈦ 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 怎么来压缩文件

在 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中如何执行ZIP文件谢谢!

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

㈩ 在DELPHI中如何实现文件的“压缩和解压”

Delphi自带有压缩包,但是,没有安装,我写了个调用程序,如果你需要,我的Email
:
[email protected]

阅读全文

与delphi文件夹压缩相关的资料

热点内容
怎么用qq浏览器整体解压文件 浏览:582
肺组织压缩15 浏览:267
安卓手机为什么换电话卡没反应 浏览:793
诸子集成pdf 浏览:336
php注册框代码 浏览:714
手机加密好还是不加好好 浏览:814
别克凯越压缩机泵头多钱 浏览:239
组管理命令 浏览:979
海南高德司机端是什么app 浏览:861
pid命令 浏览:888
一天一图学会python可视化 浏览:309
魔兽编辑文本命令串 浏览:497
android中view绘制 浏览:798
安卓机内存删除怎么恢复 浏览:331
Qt环境的编译软件放到linux 浏览:214
联创打印系统怎么连接服务器 浏览:937
杭州行政命令 浏览:160
如何查找服务器日志 浏览:801
加密的钥匙扣怎么写 浏览:579
文件夹更新不了怎么办 浏览:475