Size: a a a

2020 May 16

DB

Dmitry Belkevich in Delphi & Lazarus
Дмитрий texnix 🇨🇳
а есть способ сделать memo.loadfromfile - из файла в архиве, архив не распаковывая?
можно архив распаковать 'на лету' в памяти
источник

DB

Dmitry Belkevich in Delphi & Lazarus
гугли хотя бы TJclDecompressArchive
источник

AS

Alexey Shumkin in Delphi & Lazarus
В д10 уже есть встроенный "адаптер" для зипов... Его же можно для gzip-ов...
Но только в поток... Если мемо умеет из потока (почему и спрашивал) то не проблема
источник

Дt

Дмитрий texnix 🇨🇳... in Delphi & Lazarus
Alexey Shumkin
У него loadfromstream есть?
вроде да
источник

Дt

Дмитрий texnix 🇨🇳... in Delphi & Lazarus
ну вот представим что умеет из потока, и?
источник

Дt

Дмитрий texnix 🇨🇳... in Delphi & Lazarus
открываем архив tzip. заливаем файл из архива в stream ?
источник

VA

Viktor Akselrod in Delphi & Lazarus
источник

AS

Alexey Shumkin in Delphi & Lazarus
Не, там есть способ лучше :)
Ща
источник

AS

Alexey Shumkin in Delphi & Lazarus
Дмитрий texnix 🇨🇳
открываем архив tzip. заливаем файл из архива в stream ?
http://docwiki.embarcadero.com/CodeExamples/Rio/en/ZLibCompressDecompress_(Delphi)

Только вместо LOutput.CopyFrom(LUnZip, 0); в procedure TForm1.btnDecompressClick
будет memo.loadfromstream
источник

GB

George Bakhtadze in Delphi & Lazarus
а что, нету что-то вроде TZipStream, который раззипует вложенный TStream? обычно так делается, как в дельфи не помню уже :)
источник

VA

Viktor Akselrod in Delphi & Lazarus
Alexey Shumkin
http://docwiki.embarcadero.com/CodeExamples/Rio/en/ZLibCompressDecompress_(Delphi)

Только вместо LOutput.CopyFrom(LUnZip, 0); в procedure TForm1.btnDecompressClick
будет memo.loadfromstream
По-моему, это просто сжатые данные прочитает\запишет, но не zip архив.  И эти стримы используются уже внутри zipfile
источник

AS

Alexey Shumkin in Delphi & Lazarus
Viktor Akselrod
По-моему, это просто сжатые данные прочитает\запишет, но не zip архив.  И эти стримы используются уже внутри zipfile
Вероятно, да
источник
2020 May 17

Дt

Дмитрий texnix 🇨🇳... in Delphi & Lazarus
Alexey Shumkin
http://docwiki.embarcadero.com/CodeExamples/Rio/en/ZLibCompressDecompress_(Delphi)

Только вместо LOutput.CopyFrom(LUnZip, 0); в procedure TForm1.btnDecompressClick
будет memo.loadfromstream
но тут вроде весь файл распаковывается, а мне 1 файл из архива нужно взять, для этого же и не вся распаковка нужна, архив большой
источник

Дt

Дмитрий texnix 🇨🇳... in Delphi & Lazarus
источник

Дt

Дмитрий texnix 🇨🇳... in Delphi & Lazarus
вот это же подойдёт?
источник

VA

Viktor Akselrod in Delphi & Lazarus
Дмитрий texnix 🇨🇳
но тут вроде весь файл распаковывается, а мне 1 файл из архива нужно взять, для этого же и не вся распаковка нужна, архив большой
источник

Дt

Дмитрий texnix 🇨🇳... in Delphi & Lazarus
ну да, read
источник

SB

Sergey Bodrov in Delphi & Lazarus
Не путайте zip файл и zip stream. Файл zip может содержать в себе много файлов, в том числе без сжатия. Zip stream это данные, сжатые zlib
источник

SB

Sergey Bodrov in Delphi & Lazarus
В Delphi 7 есть zip stream, но нету zip file
источник

SB

Sergey Bodrov in Delphi & Lazarus
Читать из zip file в stream (неважно какой) очень просто даже обычным TFileStream - нужно только знать позицию начала и размер данных сжатого файла.
источник