Страница 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)