VadiMGP
|
Posted: Sat Jun 27, 2009 11:34 Post subject: |
|
|
Mowgli wrote: | Люблю аналогии. Вот ещё одна: как понять назначение колеса, если нет телеги? | Я тоже люблю отвечать вопросом на вопрос. Но какой в этом смысл в данном случае?  Mowgli wrote: | В каком случае TC захочет перечитать заново содержимое архива? | Наверняка это неизвестно. Я уже давно не писал архиваторные плагины. Насколько я помню, ТС держит в кэше не более двух последних архивов. Но это эмпирические данные, они могут меняться от версии к версии.
Mowgli wrote: | Если архив не менялся, то зачем ему это может потребоваться? | От греха подальше. Нет четких критериев для определения изменений в архиве. Размер и время - не показатель.
Quote: | И наконец, какова может быть роль плагина в навигации внутри архива? | Для навигации (после входа в архив и до выхода из него) плагин действительно не нужен.
Mowgli wrote: | Правильно написанные деструкторы исключений вызывать не должны. В противном случае они нарушают спецификацию языка C++. | Не спецификацию, а рекомендацию. Например, если класс не содержит конструктора по умолчанию, то нет никаких проблем с исключениями в деструкторе.
Mowgli wrote: | Если бы DestPath был пустой строкой, то да. А так он NULL. Всё равно проверять надо. | Я никогда не пользовался STL, так что тебе виднее. Я пользуюсь ATL или MFC. Там дополнительных проверок не требуется.
Mowgli wrote: | Для начала hArcData - это ещё не текущий файл в архиве. | А я и не утверждал , что hArcData - это текущий файл. Я утверждал, что он ассоциирован с текущим файлом. Причем тобой же, во время предшествующего вызова ReadHeader. Почему для получения собственной ассоциации из собственного итератора нужно строить список файлов да ещё с немалыми усилиями - мне непонятно.
Mowgli wrote: | При этом TC очевидно полагается на то, что список файлов вторично построенный плагином и его, сохранённый ранее, будут в точности совпадать. Если они не будут совпадать, то начнутся большие проблемы. | Нет, ТС ни на что не полагается и просто заново начинает делать перебор всех файлов. И когда твой плагин во время очередного вызова ReadHeader возвращает нужный файл, то последующий вызов ProcessFile будет с параметром PK_EXTRACT. |
|