-3

此代码使用:TArchiveEntry
所以,我真的怀疑这不是来自Zlib Unit 吗?因为可以在不声明Zlib单元的情况下使用TArchiveEntry

var AE : TArchiveEntry;

AE.EntryType := aeFile;
AE.FileNameLen := Length(sr.Name);
AE.FileLength := sr.Size;
OutStream.Write(AE, SizeOf(AE));
OutStream.Write(sr.Name[1], Length(sr.Name));
// Write the file itself
TmpStream := TFileStream.Create(ADir + sr.Name, fmOpenRead or fmShareDenyWrite);
OutStream.CopyFrom(TmpStream, TmpStream.Size);
TmpStream.Free;

毫无疑问,这是来自Zlib Unit。

var compr : TZCompressionStream;

for i := 0 to zFiles.Count-1 do
begin
  compr := TZCompressionStream.Create(mStream, zcDefault);
  compr.CopyFrom(infile,c);
  compr.Free;
end;

我想知道为什么,有什么不同?我无法弄清楚,几乎有相同的性能。

4

2 回答 2

5

单位(或单位,就此而言)没有TArchiveEntry类型。您显示的第一个代码片段是旧新闻组帖子中代码的直接复制/粘贴,该帖子在您复制的片段上方定义了自己的类型:System.ZLibSystem.ZipTArchiveEntry

Re: 如何在 Delphi 2005 中使用 ZLib 压缩文件夹???

于 2013-07-28T00:53:57.200 回答
1

这个问题似乎是:

如何确定符号的定义单位?

编译项目后,将光标悬停在符号上,IDE 将显示一个提示,该提示为定义符号的单元命名。

或者,使用CTRL+click 在编辑器中打开声明符号的单元。

于 2013-07-28T11:19:27.333 回答