Форум » [x]Harbour » zip функции харбор » Ответить

zip функции харбор

and3081: подскажите , стоит переписывать архивные функции на встроенные zip функции харбор 3,2,0 ? Надежно они работают ? Раньше в клиппер использовал вызов внешних консольных rar или arj.

Ответов - 19

gfilatov2002: and3081 пишет: встроенные zip функции харбор 3,2,0 ? Надежно они работают ? Да, они работают хорошо Ниже пример архивации с паролем: [pre] * aFiles := { "test.prg", "C:\windows\win.ini" } nLen := Len( aFiles ) aGauge := GaugeNew( 5, 5, 7, 40, "W/B", "W+/B" , "." ) GaugeDisplay( aGauge ) hb_ZipFile( "test33.zip", aFiles, 9, {| cFile, nPos | GaugeUpdate( aGauge, nPos / nLen ) },, "hello" ) RETURN [/pre]

and3081: что-то не найду в харборе функций gauge...

Dima: and3081 пишет: что-то не найду в харборе функций gauge ее там и нет , хотя и была возьми из clipper исходника CLIPPER\SOURCE\SAMPLE\GAUGE.PRG


and3081: а есть функция тестирования CRC zip архива ? Или только распаковывать и смотреть код возврата hb_unzipfile() ? вообще беда с описанием функций. многие функции в доках не упоминаются, хотя в общем списке функций есть.

and3081: to gfilatov2002 как выяснилось, не все так радужно. См. мою отдельную темку по hb_unzipfile() и т.д.

gfilatov2002: and3081 пишет: См. мою отдельную темку по hb_unzipfile() Некоторые из обнаруженных Вами косяков уже были исправлены в поставке библиотеки минигуи (см. в папке minigui\source\hbziparc)

and3081: в 3.2.0 по умолчанию минигуи нет ? Надо дополнительно качать ?

Pasha: Все правки этого модуля конечно надо собрать в харборе. Подождите, мне сейчас немного некогда, я напишу в devlist чуть позже. Впрочем, это может сделать любой: надо написать предложения в группу http://groups.google.com/group/harbour-devel/ Для доступа требуется регистрация, но она элементарная

Pasha: Объединил правки hmg, and3081, и добавил кое-что от себя. Передам патч в devlist Среди разработчиков СПО принято давать ссылки на автора. and3081, как Вас назвать ?

and3081: Да так можно и назвать and3081, я привык

Sergy: Добрый день. Чтобы не создавать лишние темы, спрошу здесь. 1) Функция hb_ZipFile() при создании архива, имя которого задано кириллицей (CP866), создает кракозябры. Внутри архива - все файлы с кириллическими именами в норме. 2) Если указать (предпоследний) параметр <lWithPath> Toggle to store the path or not как TRUE, то установка последнего параметра <lWithDrive> Toggle to store the Drive letter and path or not уже никакого влияния не имеет: внутрь архива файл помещается с именем диска. Не то чтобы это серьезная проблема, но как-то некузяво, когда входишь в архив и видишь первым каталог с именем D:\... Где нужно подкрутить ? Спасибо.

Sergy: Тэкс, с первым вопросом разобрался. Имя файла перекодирую в CP1251 и тогда все создается как нужно... Кривовато, но что делать.... -- Остается вопрос номер два: нужно поместить в архив каталог с файлами, содержащий подкаталоги. Не пойму, как это правильно сделать. hb_ZipFile() сохраняет полный путь, начиная с корня диска. Пример: есть каталог d:\data\local\save в нем файлы, например, куча *.dbf и подкаталог d:\data\local\save\logs Нужно сохранить целиком все файлы из \save\*.* и отдельным подкаталогом save\logs\*.* Получается - либо всё в одну кучу, либо с полным путем: d:\data\...

Andrey: Не знаю как hb_ZipFile(), а в МиниГуи команда такая: COMPRESS aFiles ; TO cBackupZip ; BLOCK { | cFile, nPos | ProgressUpdate( nPos, cFile, aSizeFiles, .T. ) } ; LEVEL LEVEL_ZIP ; PASSWORD cPass ; OVERWRITE ; STOREPATH ; FILEPROGRESS { | nPos, nTotal | ProgressFile( nPos, nTotal, .T. ) } ; RESULT lSuccess Куда можно любые файлы по разным путям архивировать. Т.е. задаещь в массив aFiles нужные файлы и все.

Dima: Andrey пишет: Не знаю как hb_ZipFile(), а в МиниГуи команда такая: COMPRESS aFiles ; Ну вообще то это и есть hb_zipFile [pre2] #command COMPRESS [ FILES ] <afiles> ; TO <zipfile> ; BLOCK <block> ; [ RESULT [ TO ] <lSuccess> ] ; [ LEVEL <level> ] ; [ <ovr: OVERWRITE> ] ; [ PASSWORD <password> ] ; [ <srp: STOREPATH> ] ; [ FILEPROGRESS <fileblock> ] ; => ; [ <lSuccess> := ] hb_ZipFile( <zipfile> , <afiles> , <level> , <block> , <.ovr.> , <password> , <.srp.> , , <fileblock> ) [/pre2] Кроме того в Минигуи своя HbZipArc , не такая как в Harbour

Sergy: Andrey пишет: Не знаю как hb_ZipFile(), а в МиниГуи команда такая: COMPRESS aFiles ... Куда можно любые файлы по разным путям архивировать. Т.е. задаещь в массив aFiles нужные файлы и все. Проблем с архивированием файлов как таковым нет. Есть маленький вопрос: если указывать параметр StorePath как TRUE, в архив попадает полный путь файла. Начиная с буквы диска. Заходишь такой, ничего не подозревая, в архив тоталом или фаром, а тут - БАЦ! и первое, что видишь - "папку" D: У всех так ?

Andrey: Sergy пишет: У всех так ? Да у меня тоже так ! Но мне это даже лучше, так как я вижу откуда пользователь делал архив. При распаковке этот полный путь не влияет ни на что....

Sergy: Andrey пишет: Да у меня тоже так ! Но мне это даже лучше, так как я вижу откуда пользователь делал архив. При распаковке этот полный путь не влияет ни на что.... Моя цель была сделать "привычный" архив. На гуглофоруме подсказал знающий человек. Перед запуском hb_ZipFile() нужно сменить текущий директорий, передать список файлов с "относительными" путями, запаковать, после чего вернуть текущий каталог на место. Может кому пригодится.

gfilatov2002: Sergy пишет: Моя цель была сделать "привычный" архив. Поправил для новой сборки 2.3.9 в библиотеке HbZipArc создание архива с сохранением путей к файлам с учетом этого обсуждения (т.е. имя диска теперь не включается в архив) и изменений, выполненных Виктором (Viktor Szakats).

Sergy: gfilatov2002 пишет: Поправил для новой сборки 2.3.9 в библиотеке HbZipArc создание архива с сохранением путей к файлам с учетом этого обсуждения (т.е. имя диска теперь не включается в архив) и изменений, выполненных Виктором (Viktor Szakats).



полная версия страницы