文件压缩功能来自哪里

时间:2013-07-27 21:43:41

标签: file delphi compression

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

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 单位。

var compr : TZCompressionStream;

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

我想知道为什么,有什么区别?我无法弄明白,几乎有相同的表现。

2 个答案:

答案 0 :(得分:5)

TArchiveEntry单元(或System.ZLib单元中没有System.Zip类型。您显示的第一个代码段是旧的新闻组帖子中代码的直接复制/粘贴,该帖子在您复制的代码段上方定义了自己的TArchiveEntry类型:

Re: How to use ZLib to zip up a folder in Delphi 2005???

答案 1 :(得分:1)

这个问题似乎是:

  

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

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

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