StalkerSoftware
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Hi All, Delphi 10.2.1 Кто работал со встроенным классом System.Zip.TZipFile ? Что то он не хочет от у меня работать с потоками. Есть такой код: Код: var oZipFile :TZipFile; oZipHeader :TZipHeader; oInStream :TStream; oOutStream :TStream; ... oZipFile := TZipFile.Create(); oInStream := TMemoryStream.Create(); oOutStream := TMemoryStream.Create(); TBlobField(oField).SaveToStream(oInStream); oZipFile.Open(oInStream, zmRead); TMemoryStream(oStream).SaveToFile('d:\test.zip'); oZipFile.Read(0, oOutStream, oZipHeader); | В поле oField находиться zip-архив (в архиве один файл 1.sql) который я сохраняю из базы в поток oInStream. Открываю этот архив из потока oZipFile.Open, для цели тестирования сохраняю его на диск (я проверял этот сохраненный test.zip - открывается любыми zip-архиваторами). Но при попытке распаковать этот архив в выходной поток oZipFile.Read получаю ошибку 'Invalid Zip Local Header signature'. Если код немного поменять Код: oZipFile := TZipFile.Create(); oInStream := TMemoryStream.Create(); oOutStream := TMemoryStream.Create(); TBlobField(oField).SaveToStream(oInStream); TMemoryStream(oInStream).SaveToFile('d:\test.zip'); oZipFile.Open('d:\test.zip', zmRead); oZipFile.Read(0, oOutStream, oZipHeader); | То есть я открываю архив не из потока, а из файла - тогда все работает без ошибок. То есть получается, что в классе TZipFile есть ошибка при открытии архива из потока ? |