:: Visual Foxpro, Foxpro for DOS
Выбор архиватора
ABB
Автор

Сообщений: 149
Откуда: Санкт-Петербург
Дата регистрации: 21.10.2006
Требуется архиватор, но главное условие - это не должна быть внешняя программа.
Кто нибудь пытался использовать API от Microsoft?
The Compression API exposes the Windows MSZIP, XPRESS, XPRESS_HUFF, and LZMS compression algorithms.
docs.microsoft.com
Ratings: 0 negative/0 positive
Re: Выбор архиватора
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Странное условие. А что, API это не внешняя программа?
В 7z вся логика упакована в dll - но напрямую из фокса это не повызывать, нужна ещё прослойка на си.
Можно взять собственно реализацию алгоритма LZMA (если нужно чисто для своих целей сжимать данные - не для того чтобы их могли развернуь потом стандартные архиваторы - т.е. не использовать "формат" архива 7z) - на с++ или c# и использовать в своей программе - совершенно официально.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Выбор архиватора
ABB
Автор

Сообщений: 149
Откуда: Санкт-Петербург
Дата регистрации: 21.10.2006
Igor Korolyov
Странное условие. А что, API это не внешняя программа?
Не точно выразился - это не должна быть exe.
Имеет смысл использовать zlib? В решениях есть варианты использования.
Но идеально было бы использовать ресурсы Windows.
Ratings: 0 negative/0 positive
Re: Выбор архиватора
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
zlib не вижу смысла использовать, а прикрутить 7z.dll - вполне себе решение. Только прокладку сделать на сях (в идеале вообще fll - для супер-нативного использования из фокса), или шарпе, если это ближе/понятнее. Может где уже и готовые есть, не в курсе...
Ещё вопрос - нужен таки АРХИВ, или просто метод сжатия, без заморочки на форматы. Т.е. должно ли полученное "нечто" распаковываться ВНЕ этой программы?


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Выбор архиватора
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
ABB
Требуется архиватор, но главное условие - это не должна быть внешняя программа.
Кто нибудь пытался использовать API от Microsoft?

Подобное было как-то в теме: forum.foxclub.ru
В частности сообщение:
technik
Дата: 05.04.12 15:13:46

*To zip file
cFileZip = "C:\temp2\D401001F.ZIP"
cSource = "c:\temp1\"
strtofile(chr(0x50)+chr(0x4B)+chr(0x05)+chr(0x06)+replicate(chr(0),18),cFileZip)
o=CREATEOBJECT("shell.application")
FOR EACH ofile IN o.NameSpace(cSource).items
o.NameSpace(cFileZip).copyhere(ofile)
ENDFOR
*Unzip files
cFileZip = "C:\temp\D401001F.ZIP"
cDestination = "c:\temp\"
o=CREATEOBJECT("shell.application")
FOR EACH ofile IN o.NameSpace(cFileZip).items
o.NameSpace(cDestination).copyhere(ofile)
ENDFOR

Также, могу посоветовать почитать и полностью все данное обсуждение, возможно окажется в чем-то полезным.
Поскольку в ряде случаев несколько лучше бывает пользоваться все же сторонними упаковщиками.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Выбор архиватора
ABB
Автор

Сообщений: 149
Откуда: Санкт-Петербург
Дата регистрации: 21.10.2006
Нашел статью моего любимого автора
doughennig.com
Попробую этот совет.
Ratings: 0 negative/0 positive
Re: Выбор архиватора
Foxtrot

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
docs.microsoft.com


------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/0 positive
Re: Выбор архиватора
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Ага, указатели на функции, да ещё и антикварный cab формат - сразу всад


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Выбор архиватора
sphinx

Сообщений: 31188
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Igor Korolyov
Странное условие. А что, API это не внешняя программа?

Как ни странно - но нет. Это библиотеки ОС. Можно конечно, отказаться от ОС и как-то вручную делать нужные джампы. Или надо просто определиться, что же является ВНЕШНЕЙ программой. Как по мне - разные системные вызовы вми, апи и прочее - НЕ являются. Но это возможно лишь терминология, не спорю. Но я не считаю АПИ внешней программой - а кто и как считает - ну может и интересно, но мне принципиально не сильно важно.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/1 positive
Re: Выбор архиватора
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
В Винде есть средство зиповки-раззиповки. мы же видим зиповые файлы как папки, и можем их читать и писать. Это делается вот этим API
www.sql.ru
Но оно... я не достиг уверенной архивации с его помощью. Может оно защищено от пользования юзером, не понял и бросил.

Пользуюсь древней FLL-кой VFPCOMPRESS.fll

Доб. Да, функции создания пустого ZIP_файла в API нет (не нашел), но в фоксе есть возможность создать любой (бинарный) файл командой FWRITE, Пива, давно-давно, приводил пример такого пустого ZIP-файла, где-то нашел мануал структуры, видимо )



Исправлено 1 раз(а). Последнее : of63, 01.07.18 21:10
Ratings: 0 negative/0 positive
Re: Выбор архиватора
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
ru.wikipedia.org
Помимо WindowsAPI есть и API того же 7z - и оно хоть и не "встроенное в винду" (а кто его знает что и куда там встроено, учитывая всё многообразие версий и плюс к тому возможность включения/отключения разнообразных компонентов), но получше будет - конечно, если суметь им воспользоваться


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Выбор архиватора
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> если суметь им воспользоваться
"им" - это 7z, или Виндой ?

Почему спрашиваю: Представь, я несу мою прогу на фоксе в города и веси. Мне писать еще инструкцию (и юзеру в деревне нажимать кнопки) по установке 7z ? Увольте. максимум один экзешник, при наших-то возможностям прог, на VFP...



Исправлено 1 раз(а). Последнее : of63, 01.07.18 22:05
Ratings: 0 negative/0 positive
Re: Выбор архиватора
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Им, это АПИ 7z. Которое, мягко говоря, несколько непростое, да и с документацией там беда... По крайней мере обычными declare dll с ним не поработаешь.
Конкретно 7z не требует никакой "установки". Всё что нужно для работы, это его библиотека 7z.dll. Ну для фокса, наверное, ещё нужна будет стыковочная dll/fll, в том же шарпе хоть и не без некоторых приседаний, но можно напрямую её подключить.

В результате программа получается вполне себе самодостаточной - не надо ни настраивать что то в винде ни устанавливать другой софт (тот же 7z).


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Выбор архиватора
Taran

Сообщений: 13625
Откуда: Красноярск
Дата регистрации: 16.01.2008
Вероятно у меня и не правильно.
7za.exe тупо ложу в папку с программой.
Некоторый класс - обертка, который принимает каталог с файлами или для файлов, пароль и прочее.
Формирует командную строку и запускает 7za.exe.

Хотелось бы конечно создавать некий объект на основе некоторого архиватора.dll.
Но. А ведь отрабатывает командная строка и позволяет сделать всё.
Ratings: 0 negative/0 positive
Re: Выбор архиватора
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Да, отрабатывает, но "неаккуратненько" Тот же прогресс не прикрутишь, листинг файлов в архиве - несколько через жо выходит.
И потенциально есть проблемы с правами/безопасностью. Скажем если на сетевом ресурсе держать программу, или на флешке - саму то её можно подписать Authenticode, и на уровне домена сделать такого издателя "доверенным", а внешнюю утилиту уже нет. Впрочем, 7z и из исходников можно собрать для такого случая...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Выбор архиватора
ABB
Автор

Сообщений: 149
Откуда: Санкт-Петербург
Дата регистрации: 21.10.2006
В общем, создается впечатление, что готового решения для 7z нет.
Увязать в WinAPI у меня желания нет
Буду использовать vfpcompression.fll
Ratings: 0 negative/0 positive
Re: Выбор архиватора
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
ABB
В общем, создается впечатление, что готового решения для 7z нет.

Как это нет! А японская 7-zip32.dll? ;) о которой когда-то рассказывал по ссылке выше.
Вполне рабочая, пользовался без проблем. В 17 году даже обновлялась. Т.е. более-менее живой проект.

ABB
Буду использовать vfpcompression.fll

В принципе похоже тоже неплохое решение.

Также например у меня давно уже в одной задаче используется простой как 3 рубля и надежный XZip.dll. Пакует-распаковывает железно. Создаю с его помощью таблицы .ODS с несколькими различными листами для отчетов.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)




Исправлено 1 раз(а). Последнее : Crispy, 03.07.18 06:19
Ratings: 0 negative/0 positive
Re: Выбор архиватора
b_i_f_2006

Сообщений: 14
Дата регистрации: 19.01.2006
Есть же "наша" библиотека - FoxZip.
Я ее давно адаптирую в свои программы.
Ratings: 0 negative/0 positive
Re: Выбор архиватора
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Не чем она сделана? В смысле, какой принцип сжатия?
Ratings: 0 negative/0 positive
Re: Выбор архиватора
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Это банальный zlib.dll вызываемый банальными declare dll - правда сама dll зачем-то засунута внутрь vcx файла, и для работы вынимается в tmp папку (что может спровоцировать не очень адекватный АВ).
И вообще так ридми файл есть где по-русски всё написано...


------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 31 (Гостей: 31)

© 2000-2024 Fox Club 
Яндекс.Метрика