#include "zipreader.h" #include ZipReader::ZipReader(const QString &filePath) : #ifdef UNICODE m_reader(OpenZip(reinterpret_cast(filePath.utf16()),nullptr)) #else m_reader(OpenZip(filePath.toUtf8().constData(),nullptr)) #endif { init(); } ZipReader::ZipReader(QIODevice *device) { QFile *file = dynamic_cast(device); if(nullptr != file) { QString strFile = file->fileName(); file->close(); #ifdef UNICODE m_reader = OpenZip(reinterpret_cast(strFile.utf16()),nullptr); #else m_reader = OpenZip(strFile.toUtf8().constData(),nullptr); #endif } else { m_reader = OpenZip(device->readAll().data(),device->size(),nullptr); } init(); } ZipReader::~ZipReader() { CloseZip(m_reader); } void ZipReader::init() { ZIPENTRY entry; GetZipItem(m_reader,-1,&entry); int nItems = entry.index; for(int zi=0; zi