我正在尝试从
*.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 的示例。
根据文档,
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);
...