我在哪里可以找到如何在 C++ Builder 中使用 TZipFile 的示例

问题描述 投票:0回答:1

我正在尝试从

*.zip
TMemoryStream
:

读取文件
String fName = "myInfo.txt";
std::auto_ptr<TMemoryStream> input(new TMemoryStream);
std::auto_ptr<TStringList> sFile(new TStringList);
std::auto_ptr<TZipFile> zip(new TZipFile());
TZipHeader fHeader;
zip->Open(file, zmRead);
zip->Read(fName, input.get(), fHeader);
...

但是我得到一个错误:

E2285 找不到“TZipFile::Read(UnicodeString,TMemoryStream *,TZipHeader)”的匹配项

我是一名业余程序员,非常感谢您的帮助。不幸的是,谷歌没有在这个主题中找到答案。

我做错了什么?

我一直在寻找使用 TZipFile.Read for C++Builder 的示例。

zip c++builder
1个回答
0
投票

根据文档

TStream
参数是输出参数,而不是输入参数。
Read()
将创建自己的流对象并返回指向它的指针。

参数是对

TStream*
变量的非常量引用,非常量引用不能绑定到临时,所以不能传入
auto_ptr::get()
返回的临时。您将必须传入一个实际的非自动原始指针变量,然后从该原始指针构造
auto_ptr
,例如:

std::auto_ptr<TZipFile> zip(new TZipFile);
zip->Open("myInfo.txt", zmRead);
TStream* pStream = NULL;
TZipHeader fHeader;
zip->Read(fName, pStream, fHeader);
std::auto_ptr<TStream> input(pStream);
...
© www.soinside.com 2019 - 2024. All rights reserved.