Страница 1 из 1

Посоветуйте распаковку

Добавлено: 03 Апрель 2017, 14:12
Андрей
Добрый день всем !

В одной моей программе по дате и номеру, вводимыми пользователями ищется подходящий файл XML и импортируется.
Оказалось что у другого заказчика тот файл сидит в одноименном ZIPе. Можно конечно сказать им чтоб распаковывали, однако лучше бы их этим не грузить.

Кто что может посоветовать
1. Куда распаковывать ? В ту же папку где ZIP лежит ? Может и сетевая оказаться...
В некую локальную TEMP ?
2. Чем лучше распаковывать ? Библиотеки есть какие ? или 7zip взять ?

Посоветуйте распаковку

Добавлено: 03 Апрель 2017, 14:18
Yufil
Добрый день!

1. Распаковывать надо во временный каталог %Temp%, в Кларионе есть функция GetTempPath
2. Распаковывать, используя библиотеку Zlib. У меня есть ZipClass, старый, но пользую до сих пор

https://mega.nz/#!JoQiSBSI!19Oe2HA0R1eD ... F3tH9sGTcI

Посоветуйте распаковку

Добавлено: 03 Апрель 2017, 14:21
Дед Пахом
У меня есть библиотека (платная), в которой с zip-архивами работаешь как с папками, то есть не надо распаковывать вообще.

Посоветуйте распаковку

Добавлено: 03 Апрель 2017, 18:42
kreator
Я пользовался консольным winrar'ом, в фоне всё сам сделает. Не помню про лицензию, не требуется, кажется, для консольного варианта.

Посоветуйте распаковку

Добавлено: 03 Апрель 2017, 19:05
Игорь Столяров
А я вообще ничем не пользуюсь.
Мне лень и денег жалко. :)
Распаковываем ZIP средствами WinApi ....

Код: Выделить всё

UnloadZIPFile        PROCEDURE  (ZipFile_,Dest_)

Loc:Object           CSTRING(65)
Loc:RetValue         BYTE(False)
Loc:Path             CSTRING(255)

  CODE

  If Exists(ZipFile_)

     If Exists(Dest_) then Remove(Dest_).

     If ~Exists(Dest_)

        Loc:Object                       = Create(0,Create:Ole)
        Loc:Object{Prop:Create}          = 'Shell.Application'
        Loc:Object{Prop:ReportException} = True

        Loc:Path = Clip(xExtractFileName(Dest_,1)) & Clip(xExtractFileName(Dest_,2))

        Loc:Object{'NameSpace("' & Loc:Path & '").CopyHere(' & |
                                            Clip(Loc:Object{'NameSpace("' & ZipFile_ & '").Items()'}) & ',20)'}

        If Exists(Dest_) then Loc:RetValue = True.
        Loc:Object{Prop:Deactivate}
     end
  end

  Return(Loc:RetValue)