Bulat_Ziganshin
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: а я так понимаю что там строки храняццо в Unicode, а не в UTF | Unicode - это просто нумерация символов. этот символ имеет номер 111, этот - номер 74562. это не кодировка для передачи символов unicode придуманы различные кодировки. ucs4 - каждый символ передаётся ровно 4 байтами. utf-16 - символ передаётся одним или двумя 16-битными словами. и так далее. windows api используется utf-16 в *W функциях. я использую utf-8 поэтому для unicode версии скрипта нужно убрать перекодирование из ansi в utf-16, оно здесь лишнее Цитата: а вообще скажи точно что имел в виду - распак из каталога с кириллицей, в каталог с кириллицей или распак файлов с кириллицей в названиях? | со вторым вообще мрак, я даже не смотрел Цитата: Забавная ситуация с AnsiToUtf8(Arcs[n].Path). Я уже убирал AnsiToUtf8, вы со CTACKo опять поставили... Может я что-то не то делаю, но вот результаты тестирования: инсталлятор, собранный в IS 5.3.2-Unicode, всегда возвращает ошибку, но если убрать AnsiToUtf8, то и русские файлы извлекаются/отображаются нормально и скрипт работает на всех версиях. | Стас сделал скрипт, полностью работающий на не-unicode версиях. после твоей переделки возникли проблемы с распаковкой из каталогов с русскими именами Цитата: В-общем, подвожу итог: багов не осталось (если я прав с AnsiToUtf8) и имеется два скрипта, из которых мой (в теме InnoSetup) делает тоже самое, но не требует totalSize. | но всё же не совсем то же самое - я меня показывается общий объём распакованных данных и прогресс считается по ним. как-нибудь я раскачаюсь и реализую автоматическое вычисление totalSize в dll, точнее функцию "имя архива -> объём распакованных данных в нём" далее, dll сейчас вызывает callback как минимум 100 раз в секунду со спец. событием "timer". я думаю, это лучше, чем вызывать SetTimer. меньше системных зависимостей в скрипте, гарантирована синхронизация (т.е. то что callback и процедура таймера не будут исполняться одновременно) далее, я не смог понять зачем нужен OnWndHook? кол-во распакованных файлов надо считать по событию "filename" - оно вызывается один раз перед обработкой каждого файла |