OberonCore https://forum.oberoncore.ru/ |
|
Zlib https://forum.oberoncore.ru/viewtopic.php?f=90&t=963 |
Страница 3 из 6 |
Автор: | Иван Горячев [ Вторник, 24 Июнь, 2008 09:29 ] |
Заголовок сообщения: | Re: Порт zlib |
Штирлиц писал(а): Возмите последнюю версию Zlib из SVN полностью Ей и пользуюсь. ZlibTestzip.Test - создаёт файл test.zip, содержащий: CompileOpt.txt O3-Standard-Terms+Conditions.txt Тест Рус.txt Файлы спокойно просматриваются Фаром и 7zipом ZlibTestzip.Test2 - удаляет первый файл. Фар открывает архив, но просмотреть файлы не даёт. 7zip архив вообще не открывает, но и ошибок не выдаёт |
Автор: | Штирлиц [ Вторник, 24 Июнь, 2008 10:01 ] |
Заголовок сообщения: | Re: Порт zlib |
Иван Горячев писал(а): Штирлиц писал(а): Возмите последнюю версию Zlib из SVN полностью Ей и пользуюсь. ZlibTestzip.Test - создаёт файл test.zip, содержащий: CompileOpt.txt O3-Standard-Terms+Conditions.txt Тест Рус.txt Файлы спокойно просматриваются Фаром и 7zipом ZlibTestzip.Test2 - удаляет первый файл. Фар открывает архив, но просмотреть файлы не даёт. 7zip архив вообще не открывает, но и ошибок не выдаёт Странно у меня все прекрасно работает после удаления. 7-zip 4.57, WinRAR 3.24, far 1.7 - все открывают и все показывают |
Автор: | Иван Горячев [ Вторник, 24 Июнь, 2008 11:29 ] |
Заголовок сообщения: | Re: Порт zlib |
7-zip 4.42. Может быть в этом проблема. Ладно, если ещё у кого-то вылезет - значит баг в подсистеме |
Автор: | Иван Горячев [ Среда, 25 Июнь, 2008 01:59 ] |
Заголовок сообщения: | Re: Порт zlib |
Штирлиц, небольшая просьба - комментируйте изменения для своих коммитов, пожалуйста. А то нифига непонятно. |
Автор: | Иван Горячев [ Среда, 25 Июнь, 2008 04:14 ] | |||
Заголовок сообщения: | Re: Порт zlib | |||
Иван Горячев писал(а): 7-zip 4.42. Может быть в этом проблема. Ладно, если ещё у кого-то вылезет - значит баг в подсистеме Так, диагноз: При удалении из архива содержимое файла удаляется, но запись в центральном каталоге остаётся.
|
Автор: | Штирлиц [ Среда, 25 Июнь, 2008 08:20 ] |
Заголовок сообщения: | Re: Порт zlib |
Иван Горячев писал(а): Иван Горячев писал(а): 7-zip 4.42. Может быть в этом проблема. Ладно, если ещё у кого-то вылезет - значит баг в подсистеме Так, диагноз: При удалении из архива содержимое файла удаляется, но запись в центральном каталоге остаётся. Можно по подробнее test-after-delete.zip - у вас в файле 7-zip 4.42 - "видит" оставшуюся запись в центральном каталоге? Я проверил - вроде все нормально удаляется и записей после удаления в центральном каталоге 2 остается после первого удаления |
Автор: | Иван Горячев [ Среда, 25 Июнь, 2008 08:27 ] | ||
Заголовок сообщения: | Re: Порт zlib | ||
Штирлиц писал(а): test-after-delete.zip - у вас в файле 7-zip 4.42 - "видит" оставшуюся запись в центральном каталоге? Я проверил - вроде все нормально удаляется и записей после удаления в центральном каталоге 2 остается после первого удаления Нет. Он архив просто не открывает. Запись видна в Фаре по F3. При этом если удалять 7zipом - остаётся только две записи
|
Автор: | Штирлиц [ Среда, 25 Июнь, 2008 11:24 ] |
Заголовок сообщения: | Re: Порт zlib |
Иван Горячев писал(а): Штирлиц писал(а): test-after-delete.zip - у вас в файле 7-zip 4.42 - "видит" оставшуюся запись в центральном каталоге? Я проверил - вроде все нормально удаляется и записей после удаления в центральном каталоге 2 остается после первого удаления Нет. Он архив просто не открывает. Запись видна в Фаре по F3. При этом если удалять 7zipом - остаётся только две записи Поправил DeleteEntry. Похоже эта ошибка присутствует и в оригинале Aos. Заодно и ZlibStrings.odc |
Автор: | Иван Горячев [ Четверг, 24 Июль, 2008 07:32 ] |
Заголовок сообщения: | Re: Порт zlib |
Положил на svn модуль StringsUtf - там правильные процедуры для работы с UTF-8 |
Автор: | Иван Горячев [ Четверг, 24 Июль, 2008 10:17 ] |
Заголовок сообщения: | Re: Порт zlib |
Загнал тот же большой (142M) bmp в zip-архив (сжимал 7zip-ом, степень ultra). При разархивировании через подсистему получил ошибку -6 (ZlibZip.DataError). А тот же файл, сжатый со степенью normal распаковывается нормально. Я не знаю, является ли сжатие ultra у 7zipа стандартным, и можно ли считать это ошибкой в подсистеме. Так что сообщаю просто для информации. |
Автор: | Борис Рюмшин [ Четверг, 24 Июль, 2008 10:49 ] |
Заголовок сообщения: | Re: Порт zlib |
Иван Горячев писал(а): Загнал тот же большой (142M) bmp в zip-архив (сжимал 7zip-ом, степень ultra). При разархивировании через подсистему получил ошибку -6 (ZlibZip.DataError). А тот же файл, сжатый со степенью normal распаковывается нормально. Я не знаю, является ли сжатие ultra у 7zipа стандартным, и можно ли считать это ошибкой в подсистеме. Так что сообщаю просто для информации. В ZIP (Deflate) стандартизирован только формат декодера, 7-zip пользуется этим и оптимизирует как-то сжатие, но так, чтобы оно удовлетворяло стандарту. Так что сложно определить, чья это ошибка... Попробуйте пораспаковывать тот же файл WinRAR (ZIP там от InfoZIP, если Рошал его сильно не менял) и другими архиваторами, которые используют ту же zlib... |
Автор: | Иван Горячев [ Четверг, 24 Июль, 2008 10:53 ] |
Заголовок сообщения: | Re: Порт zlib |
Из других распаковщиков у меня только Windows. Открывает и распаковывает |
Автор: | Штирлиц [ Вторник, 21 Октябрь, 2008 05:40 ] |
Заголовок сообщения: | Re: Порт zlib |
Коллеги, помогите выявить ошибку в Inflate.odc. Inflate некорректно работает с файлами > 32768 положите .\Zlib\Rsrc\ вместо test_file.doc файл размером > 32768 (желательно > 1Мб) для проверки. Соответственно поменять имя файла в Testzip.odc (функция Test) Сам архив создастся корректно и читается WinRar или 7zip архивов. Но вот распаковка фалов > 32768 проходит с ошибками Test5. WinRar и 7zip все распаковывает без ошибок. Ошибка похоже где-то в Inflate.odc Я уже мозг сломал, что там не так (по сравнению с Aos) |
Автор: | Штирлиц [ Среда, 22 Октябрь, 2008 08:11 ] |
Заголовок сообщения: | Re: Порт zlib |
Нашёл, где ошибка Ошибка в PROCEDURE InflateCodes (VAR s: Stream); Код | CodeStart: (* try fast inflation while enough space available *) IF (wavail >= 258) & (s.in.avail >= 10) THEN InflateFast(s, wavail); IF s.res.code # ZC.Ok THEN IF s.res.code = ZC.StreamEnd THEN s.decode.state := CodeWash ELSE s.decode.state := CodeBad END END; EXIT END; s.decode.tree := s.decode.lltree; s.decode.state := CodeLen Надо поправить вот так | CodeStart: (* try fast inflation while enough space available *) IF (wavail >= 258) & (s.in.avail >= 10) THEN InflateFast(s, wavail); IF s.res.code # ZC.Ok THEN IF s.res.code = ZC.StreamEnd THEN s.decode.state := CodeWash ELSE s.decode.state := CodeBad; EXIT END END END; IF s.decode.state # CodeWash THEN s.decode.tree := s.decode.lltree; s.decode.state := CodeLen END На файлах <= 32768 она не проявляется, а на >32768 иногда нет, иногда - да(чаще всего) P.S. Исправленная версия ZLib прилагается. В Bluebottle (A2) - ошибка тоже есть |
Автор: | Штирлиц [ Воскресенье, 26 Октябрь, 2008 21:25 ] |
Заголовок сообщения: | Re: Порт zlib |
Еще одна ошибка в ZlibInflate функция Код: PROCEDURE NeedOut (VAR s: Stream; VAR wavail: INTEGER): BOOLEAN; BEGIN IF wavail = 0 THEN IF (s.write = WindowSize) & (s.read # 0) THEN s.write := 0; wavail := s.read - 1 END; IF wavail = 0 THEN Flush(s); IF (s.write = WindowSize) & (s.read # 0) THEN s.write := 0; wavail := s.read - 1 END; IF wavail = 0 THEN RETURN FALSE END END END; RETURN TRUE END NeedOut; должна быть поправлена на Код: PROCEDURE NeedOut (VAR s: Stream; VAR wavail: INTEGER): BOOLEAN; BEGIN IF wavail = 0 THEN IF (s.write = WindowSize) & (s.read # 0) THEN s.write := 0; wavail := s.read - 1 END; IF wavail = 0 THEN Flush(s); IF s.write < s.read THEN wavail := s.read - s.write - 1 ELSE wavail := WindowSize - s.write END; IF (s.write = WindowSize) & (s.read # 0) THEN s.write := 0; wavail := s.read - 1 END; IF wavail = 0 THEN RETURN FALSE END END END; RETURN TRUE END NeedOut; Из-за этого функция PROCEDURE Uncompress* (VAR src, dst: ARRAY OF Byte; srcoffset, srclen, dstoffset, dstlen: INTEGER; VAR len: LONGINT; VAR res: Result); работает с ошибками, размер данных >32768 P.S. Исправленная версия ZLib прилагается. В Bluebottle (A2) - ошибка тоже есть [Модератор] с 20.10.2010 размещён: http://oberoncore.ru/bbcc/subs/zlib/ |
Автор: | Info21 [ Вторник, 28 Октябрь, 2008 14:22 ] |
Заголовок сообщения: | Re: Порт zlib |
Интересно, кто ж это писал... Код: WHILE k >= 16 DO
INC(s1, ORD(buf[index])); INC(s2, s1); INC(index); INC(s1, ORD(buf[index])); INC(s2, s1); INC(index); INC(s1, ORD(buf[index])); INC(s2, s1); INC(index); INC(s1, ORD(buf[index])); INC(s2, s1); INC(index); INC(s1, ORD(buf[index])); INC(s2, s1); INC(index); INC(s1, ORD(buf[index])); INC(s2, s1); INC(index); INC(s1, ORD(buf[index])); INC(s2, s1); INC(index); INC(s1, ORD(buf[index])); INC(s2, s1); INC(index); INC(s1, ORD(buf[index])); INC(s2, s1); INC(index); INC(s1, ORD(buf[index])); INC(s2, s1); INC(index); INC(s1, ORD(buf[index])); INC(s2, s1); INC(index); INC(s1, ORD(buf[index])); INC(s2, s1); INC(index); INC(s1, ORD(buf[index])); INC(s2, s1); INC(index); INC(s1, ORD(buf[index])); INC(s2, s1); INC(index); INC(s1, ORD(buf[index])); INC(s2, s1); INC(index); INC(s1, ORD(buf[index])); INC(s2, s1); INC(index); DEC(k, 16) END; IF k # 0 THEN REPEAT INC(s1, ORD(buf[index])); INC(s2, s1); INC(index); DEC(k) UNTIL k = 0; END; |
Автор: | Штирлиц [ Вторник, 28 Октябрь, 2008 14:50 ] |
Заголовок сообщения: | Re: Порт zlib |
Писал это я. Не помню уже. Кажется я скорость мерял вычисления. Вернуть в оригинал забыл |
Автор: | Пётр Кушнир [ Вторник, 12 Октябрь, 2010 21:51 ] |
Заголовок сообщения: | Re: Порт zlib |
Внезапно оказалось, что ZLib отказывается поддерживать русские имена файлов в BB 1.6 rc6. Ковыряния скрытого флага ZlibZIp.EFS вроде как включают поддержку UTF8 однако ни один из имеющихся в наличии архиваторов так и не смог прочесть файл. Есть вероятность(я пока не проверял) что сам ZLib самодельный архив понять сможет и извлечёт исходное имя файла без изменений. Но сам факт печалит :грусть-печаль: |
Автор: | Штирлиц [ Среда, 13 Октябрь, 2010 11:07 ] |
Заголовок сообщения: | Re: Порт zlib |
А в чем печаль? Исходники то все есть. |
Автор: | Пётр Кушнир [ Среда, 13 Октябрь, 2010 16:26 ] |
Заголовок сообщения: | Re: Порт zlib |
Ковыряние в исходниках стороннего компонента не совсем то, чего ожидаешь от компонента, выложенного на zinnamturm.eu |
Страница 3 из 6 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |