VadiMGP
|
Posted: Sat Jun 27, 2009 00:38 Post subject: |
|
|
Mowgli wrote: | Вероятно просто потому, что я сейчас делаю плагин для распаковки. Да и что изменится в плане вышеобсуждённого вопроса для других операций? | В том-то и дело , что ничего не изменится и для других операций. Но закавыка в том, что не бывает плагинов только для распаковки. Как минимум, ты должен поддерживать еще и просмотр. Так что твой вопрос именно о возможности параллельной распаковки вызвал у меня некоторое удивление. Ведь те же самые проблемы ты должен был засечь еще на этапе просмотра архива.
Quote: | - во-первых, никак нельзя описывать работу этих функций по-отдельности, поскольку они являются частью одного алгоритма. | Весьма странное утверждение. Поскольку кирпич является частью здания нельзя описывать свойства кирпича не описав свойств здания в целом?
Mowgli wrote: | Т.е. утверждается, что ProcessFile не будет вызываться, если файл был открыт для составления списка файлов. Это неправда и противоречит написанному в том-же документе в разделе о функции ProcessFile. | Это, конечно, неточность. Имеется в в иду, что ProcessFile не будет вызываться для операций с файлами, а только с PK_SKIP. Quote: | Список файлов я составляю уже в функции OpenArchive, | Мне просто любопытно стало - а для каких архивов ты пишешь плагин? Ну и возник ряд других вопросов. Может ли количество файлов в твоём архиве достигать сотен тысяч или миллионов? Если да, то сколько памяти потребуется при вызове функции OpenArchive? Сколько времени ты будешь составлять этот список если архивный файл лежит на сетевом ресурсе?
Mowgli wrote: | Дальнейшая навигация внутри архива и даже повторные заходы в этот архив осуществляются без участия плагина. | Дальнейшая навигация внутри архива и повторные заходы в этот архив могут осуществляться без участия плагина.
Mowgli wrote: | Казалось бы, у TC уже есть имена файлов из архива, мог бы и передать нам, дабы не извлекать их ещё раз. | Нет. Архив мог за это время измениться и ТС предпочитает не рисковать и работать с обновленными данными.
Mowgli wrote: | но учитывая, что деструкторы исключений не вызывают | С чего бы это? Попробуй в деструкторе разделить что-то на 0.
Mowgli wrote: | Полный путь для распаковки содержится в двух аргументах DestName и DestPath. В офф. документации замечательно написано:
Either DestName contains the full path and file name and DestPath is NULL, or DestName contains only the file name and DestPath the file path.
...
Как это понимать? Надо проверять по какому варианту сейчас взбрело в голову TC передать этот путь? | Если хочется можно и проверять, но проще конкатенировать две строки и двигаться дальше.
Mowgli wrote: | А вот какой файл в архиве распаковывать, придётся узнавать самостоятельно. TC это несомненно знает, но молчит. | "Узнавать" - это сильное выражение в данном контексте. ТС передает тебе hArcData, который ассоциирован тобой же с текущим файлом. Так что эта фраза звучит примерно как "У меня есть адрес строки. Теперь мне самостоятельно придётся узнать что это за строка".  Mowgli wrote: | Расчёт очевидно идёт на то, что обход файлов осуществляется строго в том же порядке, что и при получении списка файлов. | Это в некотором смысле тавтология. Обход файлов и получение списка это одно и то же. |
|