如何读取ZIP中的文件?(无需解压)(拿出所有的分数148分)在线等待! (48分)

  • 主题发起人 主题发起人 laohe
  • 开始时间 开始时间
L

laohe

Unregistered / Unconfirmed
GUEST, unregistred user!
条件:已知压缩包中的所有文件名称!

例如:
我想用delphi中的Memo1控件读取压缩包中的test.txt文件,如何实现呢?
或是我想用delphi中的Image1读取压缩包中的test.bmp文件,如何实现?

我是初涉delphi不久的小鸟,还请大侠教点,如果148分还不够,我再赚,然后再给你们,
谢谢!
 
找个zip控件先把需要的文件解到一个临时路径中
 
newyj:

我不是说了不要解压的!真接读取压缩包中的文件
 
我以前用过vclzip控件,解压是很简单,但它也提供一种直接读取流的方式读取文件,

但始终没有搞懂,还请大侠指点1 2
 
怎么没有人回答,这个很难是不是?

我是初学者,不知道多少分才有人回答
 
给你一个用TVCLUNZIP控件解压缩的函数,你可以自己看看TVCLUNZIP控件的方法,这是解成
文件的。应该支持解单一文件到内存里。
function MyUnZip(FZipName,FDestDir:String): Boolean;
begin
Result := False;
//这个用来显示进度条,你可以把相关的删掉。
if ShowForm = nil then
ShowForm := TShowForm.Create(nil);
ShowForm.Show;
With TVCLUnzip.Create(nil) do
begin
try
ZipName := FZipName;
DoAll := True;
DestDir := FDestDir;
RecreateDirs := True;//
RetainAttributes := True;
OverwriteMode := Always;
OnTotalPercentDone := ShowForm.VCLZip1TotalPercentDone;
if Unzip >= 0 then
Result := True;
finally
ShowForm.Close;
ShowForm.Free;
ShowForm := nil;
Free;
end;
end;
end;
 
怎么读取呀?
 
使用该控件可以先将文件名读取出来,然后根据自己的选择来解压文件。
列出文件名:
----------------------------------------
VCLUnZip1.ZipName := 压缩文件名;
VCLUnZip1.ReadZip;
CheckListBox1.Items.Clear;
for i := 0 to VCLUnZip1.Count - 1 do
CheckListBox1.Items.Add(VCLUnZip1.Filename);
-----------------------------------------------------------------------------
选择文件后,就可以开始解压缩了
--------------------------------------
i, SumCheck: Integer;
InFile: string;
begin
SumCheck := 0;
InFile := '|';
VCLUnZip1.ClearSelected;
for i := 0 to CheckListBox1.Items.Count - 1 do
if CheckListBox1.Checked then
begin
InFile := InFile + CheckListBox1.Items.Strings + '|';
SumCheck := SumCheck + 1;
end;
if SumCheck > 0 then
begin
for i := 0 to VCLUnZip1.Count - 1 do
if pos('|' + VCLUnZip1.Filename + '|', InFile) > 0 then
VCLUnZip1.Selected := True;

XZYUnZip1.UnZipSelected;
end;
end;
-------------------------------------------------------------------
 
条件:已知压缩包中的所有文件名称!

例如:
我想用delphi中的Memo1控件读取压缩包中的test.txt文件,如何实现呢?
或是我想用delphi中的Image1读取压缩包中的test.bmp文件,如何实现?

我是初涉delphi不久的小鸟,还请大侠教点,如果148分还不够,我再赚,然后再给你们,
谢谢!
Shd兄的方法不错,但是解压到内存后怎么样读取,!!!!!!!!!!
 
谢谢,问题勉强结束
 
后退
顶部